[Android] android:layout属性について

レイアウトXMLには、全要素に対してlayout_width
やlayout_height
などのlayout_xxxx
形式の属性があります。この属性は、画面部品の幅や高さなど表示に関する内容を定義できます。ここでは、layout属性について説明します。
広 告
目次
前提条件
動作確認端末
1. layout属性について
layout属性は、その要素の親ViewGroupオブジェクト要素(LinearLayout
やRelativeLayout
など)によって、使用できる属性が変わります。

例として、上記のような階層構造のレイアウトの場合を説明します。
1番上の階層にあるLinearLayout
要素の子要素には、LinaerLayout
用のlayout属性(Javaの場合はLinearLayout.LayoutParams
クラスで定義されている値)が使用できます。
上から2番目の階層のRelativeLayout
の子要素はLinearLayout
ではなく、RelativeLayout
用のlayout属性(Javaの場合はRelativeLayout.LayoutParams
クラスで定義されている値)が使用できます。
2. layout:width属性とlayout:height属性について
layout:width
属性とlayout:height
属性はすべてのViewオブジェクト要素(TextView
やButton
など)とViewGroupオブジェクト要素で使用することができ、必ず定義しなければならない属性です。
これらの属性に対しては、以下のように、px
(ピクセル)など単位を使って絶対値を設定することができます。
<Button android:layout_width="300px" android:layout_height="50px" />
またAndroidによって予め用意された定数を使って相対値を設定することもできます。
wrap_content
そのコンテンツに合った必要最低限のサイズを意味します。
match_parent
(apiレベル8まではfill_parent
)
親ビューと同じサイズを意味します。表示領域いっぱいの長さとと読み替えて問題ありません。
以下にこれら定数の使用例を示します。
<Button android:layout_width="match_parent" android:layout_height="wrap_content" />
一般的にpxのような絶対的な単位をwidth
やheight
に使用することは推奨されていません。その代わりにdp
(画面密度に依存しないピクセル)、wrap_content
、match_parent
などの相対的な単位を使用することが推奨されています。こちらの方が、異なる画面解像度の端末間において、表示内容の違いを抑えることができるためです。