Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextView和#x27;s样式和android:textAppearance属性?_Android_Textview_Android Styles - Fatal编程技术网

TextView和#x27;s样式和android:textAppearance属性?

TextView和#x27;s样式和android:textAppearance属性?,android,textview,android-styles,Android,Textview,Android Styles,如果我将我的TextView定义为: <TextView style="@android:style/TextAppearance.DeviceDefault.Large" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> 这基本上与执行以下操作相同: &

如果我将我的
TextView
定义为:

 <TextView
        style="@android:style/TextAppearance.DeviceDefault.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

这基本上与执行以下操作相同:

 <TextView
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />


我知道
style
是一种更宽泛的限定词(即不能在
android:textAppearance
中设置所有属性),但它提出了一个问题:为什么要麻烦呢?使用
android:textAppearance
style
有什么优势吗?

似乎样式是所有视图的一个属性,甚至TextView和textAppearance只应用一些仅适用于文本的“样式组件”。您可以使用styles.xml在这两种应用中应用自己的样式

文本外观

文本的默认外观:颜色、字体、大小和样式

风格


这适用于所有内容

每个视图只能有一个样式属性,但使用TextAppearance本质上允许您使用受限的文本相关属性集定义样式。您可以在一个视图中同时使用样式和文本外观。

来自样式和主题

样式的一个限制是,只能对视图应用一种样式。但是,在TextView中,还可以指定一个TextAppearance属性,该属性的功能类似于样式

TextAppearance允许您定义特定于文本的样式,同时保留视图的样式供其他用途。但是,请注意,如果直接在视图或样式中定义任何文本属性,这些值将覆盖TextAppearance值


您可以将样式与文本外观相结合。
例如,在TextAppearance中,您为按钮设置了所有与文本相关的逻辑。
在样式中,您可以重用它并添加额外属性,例如填充、大小等

比如说,

<style name="TextAppearanceTitle" parent="TextAppearance.MaterialComponents.Button">
    <item name="android:textColor">#f0f</item>
</style>

<style name="SomeButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
    <item name="android:textAppearance">@style/TextAppearanceTitle</item>
    <item name="android:padding">12dp</item>
    <item name="android:elevation">4dp</item>
</style>

#f0f
@样式/文本外观标题
12dp
4dp
它可能对某些人有用,以下是TextView的TextAppearance支持的属性列表:

<attr name="textColor" />
<attr name="textSize" />
<attr name="textStyle" />
<attr name="typeface" />
<attr name="fontFamily" />
<attr name="textColorHighlight" />
<attr name="textColorHint" />
<attr name="textColorLink" />
<attr name="textAllCaps" format="boolean" />
<attr name="shadowColor" format="color" />
<attr name="shadowDx" format="float" />
<attr name="shadowDy" format="float" />
<attr name="shadowRadius" format="float" />
<attr name="elegantTextHeight" format="boolean" />
<attr name="letterSpacing" format="float" />
<attr name="fontFeatureSettings" format="string" />

所有剩下的东西,你在一个风格设置