12

行間隔を 1.0 未満にしたい TextView があります。つまり、行間のスペースがデフォルトよりも少なくなります。私はこれをやった:

  <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 バージョンの問題のように見えます。次のように解決しました。

私の場合TextView、最後に楕円サイズを持つ最大 2 行の a を使用します。

TextViewapi 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>

TextViewmy for 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>

ここでの秘密は主に、 API 21 より前android:paddingBottomとは逆であることです。android:lineSpacingExtra

注:<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 に答える