Ответ 1
Из моего тестирования это похоже на проблему с версиями Android ниже api 21. Я решил это так:
В моем случае я использую TextView
, который имеет максимум 2 строки с эллипсисом в конце.
Стиль для моего 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>
.