Androidのgravityとlayout_gravityの違いとは?使い分けを実例付きで解説
Androidには、ビューの配置を調整するための属性として「gravity」と「layout_gravity」の2種類が用意されています。名前が似ているため混同されやすいのですが、それぞれ役割が異なります。
gravityとlayout_gravityの基本的な違い
- android:gravity … ビュー内部のコンテンツ(テキストなど)をビュー内のどの位置に表示するかを指定する属性です。
- android:layout_gravity … ビューそのものを親レイアウト内のどの位置に配置するかを指定する属性です。
まずはgravityの使用例を見てみましょう。
<TextView android:id = "@+id/button" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:gravity = "center" android:text = "Click here to hide" />
上記のコードでは、TextViewの幅がmatch_parentになっているため、android:gravity="center"を指定するとテキストが親レイアウトの中央に表示されます。
gravityで使える主な値
center − 中央に配置します。
right − 右側に配置します。
left − 左側に配置します。
end − 終端側に配置します。
start − 先頭側に配置します。
top − 上端に配置します。
bottom − 下端に配置します。
center_vertical − 縦方向の中央に配置します。効果を視覚的に確認するには、対象ビューの高さがMATCH_PARENTである必要があります。
center_horizontal − 横方向の中央に配置します。効果を視覚的に確認するには、対象ビューの幅がMATCH_PARENTである必要があります。
layout_gravityの使い方
layout_gravityはgravityと似ていますが、こちらは親レイアウトの端や角を基準に、ビュー自体を配置するための属性です。以下のように使用します。
<EditText android:id = "@+id/editext" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "right"> </EditText>
この例ではlayout_gravityにrightを指定しているため、EditTextが親ビューの右側に配置されます。
実装例:gravityとlayout_gravityの違いを確認する
それでは、実際にサンプルアプリを作成して両者の違いを確認してみましょう。
ステップ1 − Android Studioで新しいプロジェクトを作成します。メニューから [File] → [New Project] を選択し、必要な情報を入力してプロジェクトを作成してください。
ステップ2 − res/layout/activity_main.xml に以下のコードを記述します。
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" android:id = "@+id/rootview" android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = ".MainActivity"> <EditText android:id = "@+id/editext" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "right"></EditText> <TextView android:id = "@+id/button" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:gravity = "center" android:text = "Click here to hide" /> </LinearLayout>
それではアプリを実行してみましょう。Android Studioからアプリを起動するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーのRunアイコンをクリックします。実行デバイスの選択画面が表示されたら、PCに接続した実機を選択してください。端末の画面にアプリの初期画面が表示されます。

実行結果を見ると、TextViewにはgravity="center"が指定されているためテキストが親ビューの中央に配置され、EditTextにはlayout_gravity="right"が指定されているためEditText自体が親ビューの右側に配置されていることがわかります。
まとめ
- gravity:ビューの中身(テキストや子要素)をビュー内のどこに表示するかを指定する。
- layout_gravity:ビュー自身を親レイアウトのどこに配置するかを指定する。主にLinearLayoutやFrameLayoutなどで有効。
- RelativeLayoutやConstraintLayoutではlayout_gravityは機能しないため、各レイアウト専用のレイアウトパラメータを使用する点にも注意が必要です。
-
【Android入門】onCreate()とonStart()の違いをサンプルコードで解説
onCreate()とonStart()の違いとは? この記事では、Androidアプリ開発におけるonCreate()とonStart()の違いを、実際に動くサンプルコードを使ってわかりやすく解説します。 まず、それぞれのメソッドの役割をおさらいしておきましょう。 onCreate():アクティビティが最初に生成されたときに呼び出される onStart():アクティビティがユーザーの目に見える状態になる直前に呼び出される ポイントは、onCreate()はアクティビティのライフサイクルの中で基本的に一度だけ呼ばれるのに対し、onStart()はホームボタンでバックグラウンドに移動した後に
-
Androidのfill_parentとwrap_contentの違いとは?具体例でわかりやすく解説
Androidアプリ開発において、レイアウトのサイズ指定は非常に重要です。本記事では、fill_parent(現在はmatch_parent)とwrap_contentの違いを、実際に動作するサンプルコードを使ってわかりやすく解説します。fill_parentとwrap_contentの基本的な違いfill_parent / match_parent:親ビュー(画面全体など)の幅・高さいっぱいにビューを広げます。「fill_parent」は旧名称で、APIレベル8以降は「match_parent」が推奨されています。wrap_content:テキストなどのコンテンツの大きさに合わせて、ビューが