我有一个包含textColor,textSize,textStyle和typeface的样式。直接应用于EditText小部件时,文本的颜色是指定的(以及其他属性),但是当作为主题应用于活动或整个应用程序时,大小很好,但颜色不适用。我缺少什么?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="fap" parent="android:Theme.Holo">
<item name="android:textSize">24sp</item>
<item name="android:textColor">#FF0000</item>
<item name="android:textStyle">normal</item>
<item name="android:typeface">normal</item>
</style>
</resources>
答案 0 :(得分:1)
这很简单:你没有覆盖Android默认风格,你只是创建了一个扩展android:Widget.EditText
的新版本。因此,风格不适用。
要更正此问题,请在主题定义中添加:
<item name="android:editTextStyle">@style/fap</item>
现在,每次Android实例化EditText时,当它加载默认样式值时,它将找到您的fap
样式。
编辑:
搜索android的源代码是非常有用的。检查https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/attrs.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/themes.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/styles.xml
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/EditText.java
例如。
答案 1 :(得分:0)
EditText
小部件无法从活动主题中获取这些参数。它从活动主题的android:editTextStyle
参数中获取其默认样式。所以你必须创建自己的风格:
<style name="MyEditText" parent="android:Widget.EditText">
<item name="android:textSize">24sp</item>
<item name="android:textColor">#FF0000</item>
<item name="android:textStyle">normal</item>
<item name="android:typeface">normal</item>
</style>
然后在活动主题中将其设置为EditText
样式:
<style name="fap" parent="android:Theme.Holo">
<item name="android:editTextStyle">@style/MyEditText</item>
</style>
希望这会有效,因为我没有尝试过这段代码。