将样式应用于自定义 TextView 的 Android

16

我有一个类,TextViewStyled,它扩展了TextView。

在我的主题XML中,如何将样式应用于所有使用选定主题的Activity中的TextViewStyled小部件?

我有一个简单的主题,但我希望将Black Gold样式限制为TextViewStyled小部件,而不必在TextViewStyled样式属性中指定Black Gold。这是许多将动态切换的主题之一。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyThemeOneofMany" parent="android:Theme.NoTitleBar.Fullscreen">
    <item name="android:???????????">@style/TextViewStyled_Black_Gold</item>
    </style>

    <style name="TextViewStyled_Black_Gold" parent="@android:style/Widget.TextView">            
          <item name="android:background">#1E1921</item>        
          <item name="android:textColor">#A85E4F</item>
          <item name="android:textColorLink">#FFBC4F</item>
          <item name="android:textStyle">normal</item>               
      </style>


</resources>
3个回答

20

对于 AppCompat 主题(2.3.3+):

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:textViewStyle">@style/PizzaSizeWidget</item>
    </style>

    <style name="CustomTextView" parent="@android:style/TextAppearance.Widget.TextView">
        <item name="android:background">#1E1921</item>
        <item name="android:textColor">#A85E4F</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textSize">93sp</item>
    </style>

3
应该使用 CustomTextView 而不是 PizzaSizeWidget 吗? - Onur Yıldırım

2
为了在自定义主题中设置TextView的样式,请使用名称“android:textViewStyle”:
<style name="MyThemeOneofMany" parent="android:Theme.NoTitleBar.Fullscreen">
    <item name="android:textViewStyle">@style/TextViewStyled_Black_Gold</item>
</style>

在查看官方的android themes.xml文件 [点击]时发现了它。


2

我发现覆盖基础textview类并在inflation事件后更新样式是可行的。


2
请问您能提供一下代码吗?或者您可以告诉我在这个“???”标记中应该填什么吗?<style name="MyThemeOneofMany" parent="android:Theme.NoTitleBar.Fullscreen"> <item name="android:???????????">@style/TextViewStyled_Black_Gold</item> </style> - Nauman Ash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接