从我的测试来看,低于 api 21 的 android 版本似乎存在问题。我这样解决了:
在我的情况下,我使用的TextView
a 最多有 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:lineSpacingExtra
api 21 之前相反。在我的设备上,它纠正了最后一行在底部被切断的错误。
注意:<item name="android:lineSpacingExtra">-4dp</item>
看起来它等同于<item name="android:lineSpacingMultiplier">0.8</item>
.