【Kotlin/Android】TextViewのテキストを左右上下中心に寄せる方法!
この記事からわかること
- Android Studio/KotlinでTextViewを左右上下に中心に寄せる方法
- textAlignmentの設定値
- gravityの設定値とlayout_gravityとの違い
- LinearLayoutを使用していた際の挙動
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Android:13
- Kotlin:1.8.20
TextViewのテキストを左右上下中心に寄せる方法
Androidで文字を表示するためのTextView
のサイズを固定値にして背景を付与している場合に中のテキストの配置を調整したい場合はtextAlignment
やgravity
属性の値を変更します。
左右中心に寄せる:textAlignment
テキストを左右の両端や中心に配置するためにはandroid:textAlignment
属性を使用します。例えばビューの左右中心にテキストを配置したい場合はcenter
を渡します。
<TextView
android:id="@+id/text"
android:layout_width="100dp"
android:layout_height="50dp"
android:background="@color/black"
android:text="Hello"
android:textAlignment="center"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"/>
指定できる値
・inherit
: 親要素から継承
・gravity
: テキストを要素の境界内で垂直方向に中央揃えまたは端揃え?
・textStart
: テキストを要素の左端に配置
・textEnd
: テキストを要素の右端に配置
・center
: テキストを要素の中央に配置
・viewStart
: テキストを要素のLTRまたはRTLの開始端に配置
・viewEnd
: テキストを要素のLTRまたはRTLの終了端に配置
android:textAlignment
属性では左右の配置しか基本的にはコントロールすることができません。
上下中心に寄せる:gravity
テキストを上下の端や中心に配置するためにはandroid:gravity
属性を使用します。それだけでなく左右への配置も操作することができるのでこの属性のみ指定していれば上下左右の配置をコントロールすることができます。例えばビューの上下左右中心にテキストを配置したい場合はcenter
を渡します。android:textAlignment
属性の指定は必要ありません。
<TextView
android:id="@+id/text"
android:layout_width="100dp"
android:layout_height="50dp"
android:background="@color/black"
android:text="Hello"
android:gravity="center"
android:textColor="@color/white"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
指定できる値
・top
: テキストを要素の上端に配置
・bottom
: テキストを要素の下端に配置
・left
: テキストを要素の左端に配置
・right
: テキストを要素の右端に配置
・center_vertical
: テキストを要素の垂直方向に中央揃え
・center_horizontal
: テキストを要素の水平方向に中央揃え
・center
: テキストを要素の上下左右中央に配置
指定できる値はandroid:layout_gravity
属性と同じようです。
gravityとlayout_gravityの違い
似たようなandroid:gravity
とandroid:layout_gravity
属性ですが両者の違いは以下の通りです。
- gravity:要素内のコンテンツの配置を制御
- layout_gravity:親要素内での自身の位置を制御
android:gravity
android:gravity
は自身(要素)の中にあるコンテンツの配置を制御します。そのためTextView
ならテキストをLinearLayout
自身などに指定した場合は中のビュー要素の配置を指定することができます。
android:layout_gravity
android:layout_gravity
は親要素内での自身の位置を制御します。そのためLinearLayout
の子要素などに指定した場合は親要素内での自身を配置を指定することができます。
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="50dp"
android:gravity="center"
android:background="@color/black"
android:text="Hello"
android:textAlignment="center"
android:textColor="@color/white" />
<TextView
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="50dp"
android:gravity="center"
android:background="@color/black"
android:text="World"
android:textColor="@color/white" />
<TextView
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="50dp"
android:gravity="center"
android:background="@color/black"
android:text="!!"
android:textColor="@color/white" />
</LinearLayout>
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。