web-dev-qa-db-ja.com

RelativeLayoutのベースラインとは何ですか?

相対レイアウトのコンテキストで使用される場合、「ベースライン」とは何を指しますか?おそらく簡単な質問ですが、ドキュメントとグーグルにはヒントがありません。

73
David Liu

用語 ベースラインはタイポグラフィに由来 。それは、テキストにある目に見えない行文字です。

たとえば、2つのTextView要素を隣り合わせに配置するとします。 2番目のTextViewに大きなパディング(たとえば20dp)を与えます。 layout_alignBaselineを2番目の要素に追加すると、テキストは最初の要素のベースラインに合わせて「スクートアップ」します。両方の要素のテキストは、同じ見えない行に書かれているように表示されます。

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >
  <TextView
      Android:id="@+id/text1"
      Android:text="aatlg"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      />
  <TextView
      Android:text="joof"
      Android:background="#00ff00"
      Android:padding="20dp"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:layout_toRightOf="@id/text1"
      Android:layout_alignBaseline="@id/text1"
      />
</RelativeLayout>
119
Cristian

以下に、Cristianの答えを明確にする視覚的な説明を示します。

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >
    <TextView
        Android:id="@+id/text1"
        Android:text="Lorem"
        Android:background="@Android:color/holo_blue_light"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" />
    <TextView
        Android:text="Ipsum"
        Android:background="@Android:color/holo_orange_light"
        Android:padding="20dp"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_toRightOf="@id/text1"
        Android:layout_alignBaseline="@id/text1" />
</RelativeLayout>

このコードは次のようになります。

with Android:layout_alignBaseline

Android:layout_alignBaseline属性を削除すると、同じレイアウトは次のようになります: without Android:layout_alignBaseline

オレンジ色のビューの高さに影響があることを観察するのは興味深いことです(最初の場合、パディングはビューの上部にnotが適用されます)。

28
Sébastien

enter image description here

ベースラインは、テキストビューのテキストの下の線です。

1
Tarasantan