2012-07-20 15 views
11

Satır aralığının 1.0'dan daha az olmasını istediğim bir TextView var, yani satırlar arasındaki varsayılan alan miktarından daha az olacaktır. alt çıkıntılar (örneğin, y en, G'nin, ve p en) hafif kesilmiş olan TextView satırıSpacingMultiplier sıfırdan az geçen son satır

<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" /> 

Fakat alt satırında metinde

: bu yaptık. Diğer bir deyişle, bu harflerin yaklaşık 2 veya 3 piksel değerinde eksik var.

Marjlarla ve dolgularla hiçbir işlem yapmadan oynamaya çalıştım. Ben wrap_content yerine belirli bir yükseklik (biraz ekstra oda ile) kullanarak sorunu çözebilir gibi görünüyor, ancak mümkünse bunu önlemek istiyorum.

cevap

-2

sizin xml textView.setLineSpacing()

veya

benim o API 21. Aşağıda android sürümleri ile ilgili bir sorun gibi görünüyor test itibaren android:lineSpacingExtra="xxdp"

+0

Bu işe yarayabilir. Tam olarak istediğim gibi değil - Boşluğun dp değeri olarak değil, yazı tipi boyutunun bir yüzdesi olarak ölçeklendirilmesini istiyorum. Bir deneyeyim. – parkerfath

+0

Bu, beklendiği gibi çalışmaz, çünkü varolan satır aralığının üstüne fazladan bir boşluk ekler ve eğer 1 ve negatif bir değer çarpanı kullanırsa, metin tıpkı daha önce olduğu gibi kesilir ... –

0

kullanmak kod kullanımından bu

deneyin Bu şekilde çözüldü:

Benim durumumdakullanıyorum Sonunda elips ile en fazla 2 satıra sahip. API 21 ve (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> 

burada gizli sonra benim TextView için 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> 

Stil önce benim TextView için

Stil tersi olduğunu esas android:paddingBottom olduğunu api 21'den önce android:lineSpacingExtra. Cihazlarımda altta kesilen son satırın hatasını düzeltir.

NOT: , <item name="android:lineSpacingMultiplier">0.8</item> eşdeğeri gibi görünüyor.

İlgili konular