12

我有一个 TextView,我希望行距小于 1.0,即行之间的空间小于默认值。我已经这样做了:

  <TextView
    android:id="@+id/text_header"
    android:layout_width="@dimen/text_header_width"
    android:layout_height="wrap_content"
    android:text="@string/header_text"
    android:textSize="@dimen/text_header_text_size"
    android:typeface="helvetica"
    android:lineSpacingMultiplier="0.95" />

但是在底线的文本中,下降的部分(例如 y、g 和 p)被稍微切掉了。换句话说,这些字母的底部大约有 2 或 3 个像素缺失。

我尝试过使用边距和填充,但没有成功。我似乎能够通过使用指定的高度(有一点额外的空间)而不是 wrap_content 来解决这个问题,但如果可能的话,我想避免这种情况。

4

2 回答 2

1

从我的测试来看,低于 api 21 的 android 版本似乎存在问题。我这样解决了:

在我的情况下,我使用的TextViewa 最多有 2 行,最后是 ellipsize。

TextView我之前的 api 21 ( values/style.xml)的样式

<style name="MyTextViewStyle" parent="Base.TextAppearance.AppCompat">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:gravity">left</item>
    <item name="android:textColor">@color/blue_dark</item>
    <item name="android:textSize">16sp</item>
    <item name="android:maxLines">2</item>
    <item name="android:ellipsize">end</item>
    <item name="android:lineSpacingExtra">-4dp</item>
    <item name="android:paddingTop">0dp</item>
    <item name="android:paddingBottom">4dp</item>
    <item name="android:includeFontPadding">false</item>
</style>

TextView我的 api 21 及之后的样式( values-v21/style.xml)

<style name="MyTextViewStyle" parent="Base.TextAppearance.AppCompat">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:gravity">left</item>
    <item name="android:textColor">@color/blue_dark</item>
    <item name="android:textSize">16sp</item>
    <item name="android:maxLines">2</item>
    <item name="android:ellipsize">end</item>
    <item name="android:lineSpacingExtra">-4dp</item>
    <item name="android:paddingTop">0dp</item>
    <item name="android:paddingBottom">0dp</item>
    <item name="android:includeFontPadding">true</item>
</style>

这里的秘密主要android:paddingBottom是与android:lineSpacingExtraapi 21 之前相反。在我的设备上,它纠正了最后一行在底部被切断的错误。

注意:<item name="android:lineSpacingExtra">-4dp</item>看起来它等同于<item name="android:lineSpacingMultiplier">0.8</item>.

于 2018-02-17T22:35:41.810 回答
-2

尝试这个

从您的代码使用textView.setLineSpacing()

或者

从你的 xml 使用android:lineSpacingExtra="xxdp"

于 2012-07-20T10:37:53.487 回答