textColor用作它们时不应用

时间:2011-04-14 19:10:19

标签: android

我有一个包含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>

2 个答案:

答案 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>

希望这会有效,因为我没有尝试过这段代码。