【问题标题】:android:lineSpacingMultiplier doesn't work in android:textAppearanceandroid:lineSpacingMultiplier 在 android:textAppearance 中不起作用
【发布时间】:2017-07-02 01:27:07
【问题描述】:

我正在尝试在我的 textAppearance 样式 (android:textAppearance) 中添加 android:lineSpacingMultiplier,但它不起作用。我是不是做错了什么?

TextAppearance 样式:

<style name="TextAppearance.Body1" parent="TextAppearance.AppCompat.Body1">
      <item name="android:lineSpacingMultiplier">1.25</item>
</style> 

风格的运用:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="This is body 1\nThis is body 1"
    android:textAppearance="TextAppearance.Body1"
    />

【问题讨论】:

    标签: android android-styles android-textattributes


    【解决方案1】:

    lineSpacingMultiplierlineSpacingExtra 只能以风格申请。

    但作为替代方案,您可以使用lineHeight 属性,该属性可以使用textAppearance 应用于MaterialTextView

    有趣的是,如果您使用完全 Material 主题(不是 Bridge),您的所有 TextView 将自动膨胀为 MaterialTextView,否则,您需要在 xml 中指定 &lt;com.google.android.material.textview

    【讨论】:

      【解决方案2】:

      我能够通过简单地将style 应用于TextView 本身而不是textAppearance 来解决这个问题(类似于接受的答案,但代码更少)。

      这是一个示例:

      风格:

      <style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
        <item name="android:lineSpacingMultiplier">1.25</item>
      </style> 
      

      如果你不关心父母,或者更简单:

      <style name="TextBody1">
            <item name="android:lineSpacingMultiplier">1.25</item>
      </style> 
      

      然后在你的视图中:

      <TextView
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="This is body 1\nThis is body 1"
          style="@style/TextBody1"
          />
      

      我不知道为什么将android:textAppearance 应用于具有给定styleTextView 并定义android:lineSpacingMultiplier 不起作用(我推测这可能是由于行距在样式View 本身而不是ViewtextAppearance)但是如果您不关心父母,这比接受的答案要简单一些。

      【讨论】:

        【解决方案3】:

        无论出于何种原因,android:lineSpacingMultiplier 都不能作为您的 textAppearance 中的一个项目。您要么必须将其直接设置为 TextView 属性(使用 android:lineSpacingMultiplier),要么创建一个“包装”设置 textAppearancelineSpacingMultiplier 的常规样式

        创建样式

        <style name="TextBody1">
            <item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
            <item name="android:lineSpacingMultiplier">1.25</item>
        </style>
        

        <style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
            <item name="android:lineSpacingMultiplier">1.25</item>
        </style>
        

        然后通过style而不是android:textAppearance申请

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="This is body 1\nThis is body 1"
            style="@style/TextBody1"
            />
        

        【讨论】:

          猜你喜欢
          • 2018-11-09
          • 2016-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-02
          • 1970-01-01
          • 1970-01-01
          • 2019-06-13
          相关资源
          最近更新 更多