2012-01-04 46 views
3

我總是在佈局上對齊文本時遇到了最大的問題。好像TextView不能正確測量文本。報告的TextView寬度和高度比實際文本大很多。人們會期望TextView的寬度和高度緊緊纏繞文本。TextView文本對齊太可怕了!如何解決它?

下圖顯示數字18和文本「SEC」未在同一底部基線上對齊的情況。這是由於較大的文本高度比文本大得多。我的xml佈局可以在下面看到。

如何實現更好的文本對齊精度?在你的TextView

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="@drawable/scan_block_1_bg" > 

    <LinearLayout 
     android:id="@+id/staticCountDown" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/tvStaticScanning" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:shadowColor="#ffffff" 
      android:shadowDy="1.0" 
      android:shadowRadius="0.01" 
      android:text="SCANNING" 
      android:textColor="#878787" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/tvCountDown" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:shadowColor="#66000000" 
      android:shadowDy="-1.0" 
      android:shadowRadius="0.01" 
      android:text="03" 
      android:textColor="#b6b6b6" 
      android:textSize="81sp" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/tvStaticSeconds" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@id/staticCountDown" 
     android:layout_toRightOf="@id/staticCountDown" 
     android:gravity="left" 
     android:shadowColor="#ffffff" 
     android:shadowDy="1.0" 
     android:shadowRadius="0.01" 
     android:text="SEC" 
     android:textColor="#878787" 
     android:textSize="12sp" /> 
</RelativeLayout> 

enter image description here

回答

1

奇怪,因爲如果你看一下所提供的截屏無論是textviews它聽起來有相同的底部基準線。嘗試在電視倒計時中放置字母「gj」。你實際上可以看到兩者會有相同的底部基準線。它最好與padma庫馬爾的答案一起去。

+0

謝謝,我開始認爲它與此有關......我確實看到有一個TextView android:includeFontPadding的選項,但它好像消除了頂部填充但不是底部......我想知道是否有是一個類似的選項這樣的功能...如果沒有新的答案給出在接下來的幾天我會考慮庫馬爾答案是正確的... – Jona 2012-01-04 22:56:35

+0

我相信你的答案是正確的,因爲你提到空間的原因。我希望有一種方法可以根據基線來對齊文本。 – Jona 2012-01-06 16:51:23

4

//使用這個屬性

android:layout_alignBaseline="@id/staticCountDown" 

android:layout_marginBottom="-10dp"

+0

從技術上講,我們不應該添加填充以匹配文本。 TextView報告的寬度和高度比實際文本大得多,這就是造成文本對齊問題的原因。我不相信佈局問題。 – Jona 2012-01-04 16:00:46

+0

你實際上不需要'marginBottom','alignBaseline'本身就夠了。 OP在問題中有'alignBottom',這就是我們在屏幕截圖中看到的。 – TWiStErRob 2014-06-28 10:49:07