当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变

Posted

技术标签:

【中文标题】当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变【英文标题】:Color of the text is not changing when style including textColor is applied to textAppearance of textView 【发布时间】:2017-12-13 22:34:44 【问题描述】:

我想减少我的 xml 代码重复。所以我为textView中的文本做了一些标准样式。我们可以在 textView 的 'style' 属性和 'android:textAppearance' 属性下应用样式。

以下是我为文本外观制作的一些样式-

<style name="Grey">
    <item name="android:textColor"> #333333 </item>
</style>

<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
    <item name="android:textColor"> #00FF00 </item>
    <item name="android:typeface">monospace</item>
    <item name="android:textSize">20sp</item>
</style>

当我在“textAppearance”属性下应用这些样式时,文本的颜色在上述样式中都没有改变。它在 textView 的“样式”属性下工作。

//textColor not working
<TextView
    android:id="@+id/profile_name"
    android:layout_
    android:layout_
    android:text="Full Name"
    android:textAppearance="@style/CodeFont"/>

//textColor working
<TextView
    android:id="@+id/profile_name"
    android:layout_
    android:layout_
    android:text="Full Name"
    style="@style/CodeFont"/>

我希望它们在 'textAppearance' 属性下工作,以便我可以在 'style' 属性下应用一些其他样式。根据android documentation,我们可以在'textAppearance'属性下应用textColor样式。

请为此提出一些解决方案。 谢谢

【问题讨论】:

textColor 很可能被默认的 TextView 样式覆盖,因为样式优先于 textAppearance。要检查这一点,您可以在 android:textAppearance="@style/CodeFont" 行之前设置 android:textColor="@null"。 【参考方案1】:

尝试将小部件中的文本颜色设置为 null,如下所示:

<TextView
android:id="@+id/profile_name"
android:layout_
android:layout_
android:text="Full Name"
android:textColor="@null"  //add this line
android:textAppearance="@style/CodeFont"/>

另外,我认为您应该尝试使缓存无效并重新启动 Android Studio。导入和链接问题有时可以这样解决。

【讨论】:

尝试清理构建并使缓存失效并重新启动【参考方案2】:

这个 sn-p 对我有用

 <style name="fonts" parent="TextAppearance.AppCompat">
    <item name="android:textColor">#245546</item>
    <item name="android:textSize">30dp</item>
</style>

和textview是

  <TextView
    android:id="@+id/sample"
    android:layout_
    android:layout_
    android:text="Welcome to ***"
    android:textAppearance="@style/fonts"/>

【讨论】:

【参考方案3】:

有时如果你没有在样式中给出android:textColor,你可能会遇到文本颜色不会出现在TextView中的问题,所以解决方案是完全给出&lt;item name="android:textColor"&gt;@color/yourColor&lt;/item&gt; in样式而不是这个&lt;item name="textColor"&gt;@color/yourColor&lt;/item&gt;.. 你的问题将得到解决:)

【讨论】:

以上是关于当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变的主要内容,如果未能解决你的问题,请参考以下文章

Laya的高亮文字

Flutter:使用 TapGestureRecognizer 更改 TextSpan 的文本样式

使用 class 选择器设置样式

我如何创建这种 textview 样式?

在 Asp.NET 中将 CSS 应用于内容页面

text 请记住,要使用clearfix,请将下面的代码添加到样式表中。然后,将'class =“clearfix”'应用于w的父元素