当包含 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中的问题,所以解决方案是完全给出<item name="android:textColor">@color/yourColor</item>
in样式而不是这个<item name="textColor">@color/yourColor</item>
.. 你的问题将得到解决:)
【讨论】:
以上是关于当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:使用 TapGestureRecognizer 更改 TextSpan 的文本样式
text 请记住,要使用clearfix,请将下面的代码添加到样式表中。然后,将'class =“clearfix”'应用于w的父元素