Material TextAppearance是否可用于处理不同的textSize

时间:2019-04-25 09:30:28

标签: android android-layout textview

我只是发现了textAppearence关键字和TextAppearance.MaterialComponents

使用示例:

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:fontFamily="@font/proxima_nova_soft_bold"
     android:text="@string/ads_header_last"
     android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
     android:textColor="@color/charcoal_grey" />

如果看起来像TextAppearance.MaterialComponents.Headline5,我们发现了

<style name="TextAppearance.MaterialComponents.Headline5" parent="TextAppearance.AppCompat.Headline">
<item name="fontFamily">sans-serif</item>
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
<item name="android:textAllCaps">false</item>
<item name="android:textSize">24sp</item>
<item name="android:letterSpacing">0</item>

textSize内部是24sp,我很困惑,因为我认为textAppearence关键字可以管理所有屏幕设备的textSize

如果我们使用

android:textAppearance="@android:style/TextAppearance.Material.Headline"

TextAppearance.Material.Headline样式是

<style name="TextAppearance.Material.Headline">
    <item name="textSize">@dimen/text_size_headline_material</item>
    <item name="fontFamily">@string/font_family_headline_material</item>
    <item name="textColor">?attr/textColorPrimary</item>
</style>

并且@dimen/text_size_headline_material针对不同的屏幕尺寸正确使用了不同的调光

<dimen name="text_size_headline_material">24sp</dimen>
<dimen name="text_size_headline_material">18sp</dimen>
etc...

为什么TextAppearance.MaterialComponents.Headline5的配置不同? 而且我不能使用android:textAppearance="@android:style/TextAppearance.Material.Headline",因为它需要API 21

我想念什么吗?

1 个答案:

答案 0 :(得分:1)

TextAppearance.MaterialComponents.Headline5<h5>标签,因此它具有固定的文字大小,这就是为什么如果要使用此样式不能更改文字大小的原因,这就是标题标签

这对于所有类型的设备都是相同的

enter image description here

要更改样式

使用标题style制作自己的parent,并在您的TextView中使用它

<style name="TvStyle" parent="TextAppearance.MaterialComponents.Headline5">
     <item name="android:textSize">16sp</item>
</style>