我在我的应用中为字体创建了几种样式。
如何将这些样式添加到视图中? - 1)使用样式属性2)使用textAppearance。
使用样式不是一个选项,因为视图可能有其他属性(边距,填充,最小宽度等 - 我不能为视图指定2个样式),所以我需要单独指定与文本相关的属性,但是{{ 1}}在这里不起作用:
styles.xml:
android:textColor
layout.xml:
<style name="TextAppearance.baseText" parent="@android:style/TextAppearance">
<item name="android:textAppearance">?android:textAppearanceSmall</item>
<item name="android:typeface">sans</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">15sp</item>
</style>
为什么它不起作用?如何在textappearance中指定textcolor?
答案 0 :(得分:11)
正如Oderik在评论中提到的,Button视图的textColor
属性具有默认值。此textColor
值将覆盖通过textAppearance
属性设置的任何值。因此,您有两种选择:
将样式中的textColor设置为@null:
<style name="Application.Button">
<item name="android:textAppearance">@style/Application.Text.Medium.White</item>
<item name="android:textColor">@null</item>
</style>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Application.Button" />
在Button XML中将textColor设置为@null:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Application.Button"
android:textColor="@null" />
答案 1 :(得分:8)
有效。您的文字颜色为白色 - 与默认颜色相同。放置任何其他颜色,如<item name="android:textColor">#AA6699</item>
,你会看到差异。
第二件事是你试图在文本外观中设置文本外观 - doen是有意义的。如果您要设置小写字母,请使用父parent="@android:style/TextAppearance.Small
执行此操作并删除行<item name="android:textAppearance">?android:textAppearanceSmall</item>
第三件事是你想要小写字母并添加额外的textSize - 没有意义。
试试这个,对我有用:
<style name="BaseText" parent="@android:style/TextAppearance.Small">
<item name="android:typeface">sans</item>
<item name="android:textColor">#AA7755</item>
</style>
如果你想设置一切风格:
<style name="BaseText" parent="@android:style/TextAppearance.Large">
<item name="android:typeface">sans</item>
<item name="android:textColor">#AA7755</item>
</style>
<style name="BaseText.Margins">
<item name="android:layout_margin">10dip</item>
</style>
BaseText.Margins从BaseText继承的位置。 然后你可以使用:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
style="@style/BaseText.Margins" />
答案 2 :(得分:4)
如果您想使用android:TextAppearance
代替style:
来设置android:textColor
,则需要在android:textColor=@null
上设置TextView
。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:textAppearance="@style/TextAppearance.AppCompat.Medium.MySubheader"
android:textColor="@null"
tools:text="Section" />
然后它将从您的android:TextAppearance
<style name="TextAppearance.AppCompat.Medium.MySubheader">
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/black_54</item>
</style>