2012-01-04 3 views
3

私はいつもレイアウト上のテキストの整列に関して最大​​の問題を抱えているようです。 TextViewがテキストを正しく測定しないようです。報告されたTextViewの幅と高さは、実際のテキストよりもはるかに大きいです。 TextViewの幅と高さがテキストの周りにしっかりとラップされることが予想されます。TextViewテキストアライメントは恐ろしいです!それを回避するには?

下の画像は、数字18とテキスト「SEC」が同じ下のベースラインでどのようにアライメントされていないかを示しています。これは、テキストの高さがテキストよりもはるかに大きいためです。私のXMLレイアウトは以下の通りです。

どのように優れたテキストの位置合わせの精度を達成するには?

<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

ボトムベースのアラインメントが同じです。テレビのカウントダウンに文字「gj」を入れてみてください。あなたは実際には両方が同じボトムベースアライメントを持つようになることを見ることができます。パーマ・クマールの答えと一緒に行くほうがいい。

+0

ありがとう、私はそれに関係があると考え始めた...私はTextViewアンドロイド:includeFontPaddingのオプションがあることがわかりますが、それはトップパディングを削除するようですが、ボトムではないようです...私はそこにそのような機能のための同様のオプションです...今後数日以内に新しい回答がない場合、私はKumarの答えを正しいものと見なします... – Jona

+0

スペースの原因について言及したので、あなたの答えは正しいと思います。私は、ベースラインに基づいてテキストを整列させる方法があることを願っています。 – Jona

4

//あなたのTextViewにこの属性を使用

android:layout_alignBaseline="@id/staticCountDown" 

android:layout_marginBottom="-10dp"あなたはどちらのtextviewsを提供するスクリーンショットを見れば、それが聞こえるかもしれほど奇妙な

+0

技術的には、テキストと一致するようにパディングを追加する必要はありません。 TextViewは、実際のテキストよりもはるかに大きな幅と高さを報告しています。これがテキストアライメントの問題を引き起こしています。私が信じるレイアウトの問題ではありません。 – Jona

+0

実際には 'marginBottom'は必要ありません。' alignBaseline'だけで十分です。 OPに問題の「alignBottom」があり、これがスクリーンショットで見たものです。 – TWiStErRob