ココでわかるAndroidアプリ開発

あなたのプログラミングを徹底サポート

【Android】gravityとlayout_gravityの使い方と違い

  • 作成日:2022/01/27

gravityとlayout_gravity属性について解説します。

gravityとは

gravityはviewの内部の位置を指定するandroidの属性です。 ボタンなどのviewに設定する場合と、LinearLayoutなどのレイアウトに設定する場合を解説します。

viewに設定

テキストビューやボタンなどのviewにgravity属性を設定したら、テキストの位置を左右、中央寄せにしたりできます。

設定値 解説 サンプル
right 右寄せ 右寄せ
left 左寄せ 左寄せ
center 中央寄せ 中央寄せ
center_vertical 縦の中央せ 縦の中央せ
center_horizontal 横の中央せ 横の中央せ

gravity属性はviewの内側の位置を指定するので、テキスト文字の位置が変更されます。

では、サンプルコードを紹介します。例えば、ボタンのテキストを右寄せにする場合は次のようにします。16行目で右寄せの設定をしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

        <Button
            android:id="@+id/btn"
            android:layout_width="300dp"
            android:layout_height="100dp"
            android:text="ボタン"
            android:textSize="30sp"
            android:backgroundTint="#696969"
            android:gravity="right"
            />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

レイアウトに設定

gravity属性はレイアウトにも設定できます。 例えば、LinearLayoutの内部にボタンが1つある場合、LinearLayoutにgravity属性を使えば、ボタンの位置を指定できます。

以下はLinearLayout(黄色)にgravity属性を設定した場合の結果です。 内部のボタンの位置が変わってるのがわかります。

設定値 解説 サンプル
right 右寄せ 右寄せ
left 左寄せ 左寄せ
center 中央寄せ 中央寄せ
center_vertical 縦の中央せ 縦の中央せ
center_horizontal 横の中央せ 横の中央せ

サンプルコードを紹介します。15行目で中央寄せの設定をしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#f0e68c"
        android:orientation="vertical"
        android:gravity="center">

        <Button
            android:id="@+id/btn"
            android:layout_width="200dp"
            android:layout_height="100dp"
            android:backgroundTint="#696969"
            android:text="ボタン"
            android:textSize="30sp" />
    </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

このように、内部の位置を指定したい場合はgravity属性を活用しましょう。

layout_gravityとは

layout_gravityは親要素に対するviewの位置を指定できるandroidの属性です。 こちらの属性もボタンやレイアウトなどに設定可能です。

viewに設定

テキストビューやボタンなどのviewにlayout_gravity属性を設定したら、viewの位置を左右、中央寄せにできます。

以下は親要素が黄色の場合、ボタンにlayout_gravity属性を設定した結果です。

設定値 解説 サンプル
right 右寄せ 右寄せ
left 左寄せ 左寄せ
center 中央寄せ 中央寄せ

親要素がLinearLayoutの場合、orientation属性をvertical(縦並び)かhorizontal(横並び)によって結果が変わります。 この例は縦並びの例です。

サンプルコードを紹介します。24行目でボタンに中央寄せの設定をしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="#f0e68c"
        android:orientation="vertical"
        >
        
        <Button
            android:id="@+id/btn"
            android:layout_width="200dp"
            android:layout_height="100dp"
            android:backgroundTint="#696969"
            android:text="ボタン"
            android:textSize="30sp"
            android:layout_gravity="center"
            />
    </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

レイアウトに設定

layout_gravity属性はレイアウトにも設定できます。

以下はLinearLayout(黄色)にlayout_gravity属性を設定した場合の結果です。 layout_gravity自体の位置が変わっていることがわかります。

設定値 解説 サンプル
right 右寄せ 右寄せ
left 左寄せ 左寄せ
center 中央寄せ 中央寄せ
center_vertical 縦の中央せ 縦の中央せ
center_horizontal 横の中央せ 横の中央せ

サンプルコードを紹介します。15行目でLinearLayoutに左寄せの設定をしています。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#f0e68c"
        android:orientation="vertical"
        android:layout_gravity="left"
        >

        <Button
            android:id="@+id/btn"
            android:layout_width="200dp"
            android:layout_height="100dp"
            android:backgroundTint="#696969"
            android:text="ボタン"
            android:textSize="30sp"
            />

    </LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

このように、親要素に対する自分自身の位置を指定したい場合はlayout_gravity属性を使います。

gravityとlayout_gravityの違い

gravity属性はviewの内部の位置を指定するのに対して、layout_gravity属性はview自体の位置を指定できます。 どちらの属性もボタンやレイアウトなどに設定できます。

どちらを使うのかはケースバイケースです。例えば、LinearLayoutの中にボタンが3つあるとして、中の3つのボタンの位置をまとめて指定したい場合は、 LinearLayoutにgravity属性を設定するのが簡単です。

一方で、3つのボタンのうち、1つは右寄せ、1つは左寄せ・・・など個々に位置を指定したい場合は、ボタンに対してlayout_gravity属性を設定するのが良いでしょう。

この記事のシェアはこちらから

カテゴリー

カテゴリーの一覧です。

Contact

当サイトへのご連絡は以下よりお願いします。

© Copyright 2022 ココでわかるAndroidアプリ開発