问题描述
|
我的样式包括textColor,textSize,textStyle和字体。当直接应用于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>
解决方法
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>
然后在活动主题中将其设置为“ 1”样式:
<style name=\"fap\" parent=\"android:Theme.Holo\">
<item name=\"android:editTextStyle\">@style/MyEditText</item>
</style>
希望这会成功,因为我没有尝试过此代码。
,这很简单:您不会覆盖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
例如。