我正在尝试在我的所有应用中添加一个样式,所以我创建了一个内部风格的主题:
<resources>
<style name="MyTheme" parent="android:Theme.Holo.Light">
<item name="android:textAppearance">@style/subtitle</item>
</style>
<style name="subtitle parent="@android:style/TextAppearance">
<item name="android:textColor">@color/purple</item>
<item name="android:textSize">40sp</item>
</style>
</resources>
但是textAppearance
不起作用它保持不变,但是当我在我的主题中添加textColor
这样的内容时,它可以正常工作
答案 0 :(得分:1)
我可以看到,你没有在xml中为主题声明颜色。请在<resources>
中添加以下行并尝试。你的xml看起来像是:
<resources>
<style name="MyTheme" parent="android:Theme.Holo.Light">
<item name="android:textAppearance">@style/subtitle</item>
</style>
<color name="purple">code for your color</color>
<style name="subtitle parent="@android:style/TextAppearance">
<item name="android:textColor">@color/purple</item>
<item name="android:textSize">40sp</item>
</style>
我认为这样做。
答案 1 :(得分:1)
这是一个很老的问题,但答案可能会对某人有所帮助。 解决此问题的关键在于此处的“样式技术的优先顺序”:
顶部是最高优先级,底部是最低优先级。
我们可以看到theme
的优先级最低,在您的示例中,您的android:textAppearance
属性被接受此属性的每个视图的default style
覆盖,默认样式属性在每个接受此属性的特定视图的每个元素中定义,在这种情况下,android:Theme.Holo.Light
为textView提供默认样式,为android:textViewStyle
...,按钮为android:buttonStyle
(继承其{ {1}}(来自TextView),等等。
因此,如果您尝试将textAppearance
属性应用于TextVew,则应在android:textAppearance
中使用<item name="android:textViewStyle">@style/subtitle</item>
而不是<item name="android:textAppearance">@style/subtitle</item>
。不用说,这是将MyTheme
设置为null,这样您当前的代码就可以与textViews android:textViewStyle
这篇文章更深入地解释了此优先顺序:
https://medium.com/androiddevelopers/whats-your-text-s-appearance-f3a1729192d
答案 2 :(得分:0)
取决于您的目标API,您需要将自定义代码放在不同的/res/values-vxx/style.xml文件中。
答案 3 :(得分:0)
对于TextView,请尝试在主题内使用android:textAppearanceSmall
。