我有一个显示长文本的TextView。我想在行之间添加一些空白,就像CSS中的line-height属性一样。我该怎么做?
您可以在XML文件中使用lineSpacingExtra
和lineSpacingMultiplier
。
LineSpacingExtra="10sp"
。<TextView
android:layout_width="match_parent"
android:layout_height="180dp"
android:lineSpacingExtra="10sp"/>
你可以查看 android:lineSpacingExtra
并将其应用于你的XML中。
或者使用相关方法 public void setLineSpacing (float add, float mult)
这份补充答案展示了更改行间距的效果。
您可以使用以下代码设置倍数和/或额外间距:
textView.setLineSpacing(float add, float mult)
或者您可以使用以下方法获取值:
int lineHeight = textView.getLineHeight();
float add = tvSampleText.getLineSpacingExtra(); // API 16+
float mult = tvSampleText.getLineSpacingMultiplier(); // API 16+
公式如下:
lineHeight = fontMetricsLineHeight * mult + add
默认乘数为1
,默认额外间距为0
。
添加 android:lineSpacingMultiplier="0.8"
可以将行间距设置为80%。
TextView.setLineSpacing(n,m)
函数。您可以在XML文件中使用lineSpacingExtra
或lineSpacingMultiplier
。
lineSpacingExtra
会在TextView的文本行之间添加额外的间距。
<TextView
android:lineSpacingExtra="4dp" />
lineSpacingMultiplier
作为行间距高度的比例因子:
<TextView
android:lineSpacingMultiplier="0.8" />
height * multiplier + extra
。您可以使用两个属性
1. lineSpacingExtra: 它用于dp间距。
android:lineSpacingExtra="4dp"
2. lineSpacingMultiplie: 它用于相对比例缩放。
android:lineSpacingMultiplier="0.8"
对我有用
只需在您的TextView中添加两行
android:includeFontPadding="false"
android:lineSpacingMultiplier="0.8"
<TextView
android:id="@+id/searchByItemTv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:fontFamily="@font/dm_sans"
android:includeFontPadding="false"
android:lineSpacingMultiplier="0.8"
android:paddingVertical="3dp"
android:paddingStart="4dp"
android:paddingEnd="6dp"
android:text="@string/date_of_birth"
android:textColor="@color/text_black"
android:textSize="16dp" />
注意:不要使用 android:textAppearance=""
<item name="android:lineHeight">16sp</item>
来直接设置行高,但根据上面的文档,行高的工作方式如下 -Explicit height between lines of text. If set, this will override the values set for lineSpacingExtra and lineSpacingMultiplier.
<attr name="lineHeight" format="dimension" />
所以请确保只使用lineSpacingExtra & lineSpacingMultiplier
或lineHeight
中的一个。