TextView lineSpacingMultiplier小于零,最后一行

时间:2012-07-20 08:13:35

标签: android android-layout

我有一个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来解决问题,但我想尽可能避免这种情况。

2 个答案:

答案 0 :(得分:1)

从我的测试看起来它似乎是api 21下面的Android版本的问题。 我解决了这个问题:

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

api 21之前TextView的样式(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,它与api 21之前的android:lineSpacingExtra相反。在我的设备上它纠正了最后一行在底部被切断的错误。

注意:<item name="android:lineSpacingExtra">-4dp</item>看起来相当于<item name="android:lineSpacingMultiplier">0.8</item>

答案 1 :(得分:-2)

试试这个

代码中的

使用textView.setLineSpacing()

使用android:lineSpacingExtra="xxdp"