2012年03月09日

gravityとlayout_gravity


ViewGroupやその中のViewやウィジェットをうまく配置するために
gravity属性を使用します
gravityとは重力のことでどちらに重力をかけるか・・・
みたいなことだと思います
gravity属性を変えることで様々な位置にウィジェットを配置することができます
gravityには、ウィジェットの内部に対する配置を指定するgravity属性
親ウィジェットに対するウィジェットの配置を指定する
layout_gravity属性の2種類があります
この違いが結構ややこしいので理解して使い分けていきたいと思います

gravityの変更の仕方はxmlファイルで変更します
(もちろんjavaソースでも変更できます・・・)
プロパティーの設定方法

各属性の設定内容一覧です
またxmlソースで"|"で区切って複数指定することも可能です

指定値 効果
top コンテナの上部に配置し、サイズ変更は行いません
bottom コンテナの下部に配置し、サイズ変更は行いません
left コンテナの左側に配置し、サイズ変更は行いません
right コンテナの右側に配置し、サイズ変更は行いません
center_vertical 上下中央に配置し、サイズ変更は行いません
fill_vertical オブジェクトの高さを、コンテナのサイズに合わせます
center_horizontal 左右中央に配置し、サイズ変更は行いません
fill_horizontal オブジェクトの幅を、コンテナのサイズに合わせます
center 上下左右中央に配置し、サイズ変更は行いません
fill オブジェクトの高さ・幅を、コンテナのサイズに合わせます
clip_vertical top/bottomの追加オプションとして、オブジェクトの上部/下部の境界をコンテナの境界に合わせます
clip_horizontal left/rightの追加オプションとして、オブジェクトの左側/右側の境界をコンテナの境界に合わせます



layout_gravity
layout_gravityは前述の通り親ウィジェット(ViewGroup)
に対するウィジェットの配置を指定するものです
例として3つのtextViewをleft・center・rightにそれぞれ配置してみたいと思います
xmlソースは以下の通りです
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical" >

    <TextView
    	android:id="@+id/textView1"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="left" android:layout_gravity="left"/>

    <TextView
    	android:id="@+id/textView2"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="center" android:layout_gravity="center"/>

    <TextView
    	android:id="@+id/textView3"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="right" android:layout_gravity="right"/>

</LinearLayout>
実行すると・・・
device46.png
それぞれ親ウィジェット(Linearlayout)に対して
textViewが寄っていることがわかります

gravity
次にgravityですがこれはウィジェットの内部に対する配置を指定するものです
今度はボタンを配置しそれぞれlayout_gravityをleft・center・rightとし
なかのテキストのgravityをtop・center・bottomとしたいと思います
xmlソース
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical" >

    <Button
    	android:id="@+id/button1"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="left-top" android:gravity="top" android:layout_gravity="left"/>

    <Button
    	android:id="@+id/button2"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="center-center" android:gravity="center" android:layout_gravity="center"/>

    <Button
    	android:id="@+id/button3"
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="right-bottom" android:layout_gravity="right" android:gravity="bottom"/>

</LinearLayout>

これを実行すると
device47.png
ボタンと中の文字がそれぞれ寄っていることがわかります
スポンサードリンク

posted by kenken at 17:05 | Comment(0) | TrackBack(0) | レイアウト カスタマイズ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。