Атрибут gravity задает позиционирование содержимого внутри визуального элемента. Он может принимать следующие значения:
top
: элементы размещаются вверху
bottom
: элементы размещаются внизу
left
: элементы размещаются в левой стороне
right
: элементы размещаются в правой стороне контейнера
center_vertical
: выравнивает элементы по центру по вертикали
center_horizontal
: выравнивает элементы по центру по горизонтали
center
: элементы размещаются по центру
fill_vertical
: элемент растягивается по вертикали
fill_horizontal
: элемент растягивается по горизонтали
fill
: элемент заполняет все пространство контейнера
clip_vertical
: обрезает верхнюю и нижнюю границу элементов
clip_horizontal
: обрезает правую и левую границу элементов
start
: элемент позиционируется в начале (в верхнем левом углу) контейнера
end
: элемент позиционируется в конце контейнера(в верхнем правом углу)
Например, поместим текст в самый низ в элементе TextView:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:gravity="bottom" android:layout_width="0dp" android:layout_height="200dp" android:text="Hello Android!" android:textSize="30sp" android:background="#e8eaf6" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
При необходимости мы можем комбинировать значения, разделяя их вертикальной чертой:
<TextView android:gravity="bottom|right" android:layout_width="0dp" android:layout_height="200dp" android:text="Hello Android!" android:textSize="30sp" android:background="#e8eaf6" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />
Чтобы установить параметр gravity у элемента надо вызвать метод setGravity(). В качестве параметра в метод передается одна из констант класса Gravity, которые аналогичны значениям атрибута (за тем исключенем, что названия в верхнем регистре):
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.os.Bundle; import android.view.Gravity; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ConstraintLayout constraintLayout = new ConstraintLayout(this); TextView textView = new TextView(this); textView.setText("Hello Android!"); textView.setTextSize(30); textView.setBackgroundColor(0xffe8eaf6); // установка gravity textView.setGravity(Gravity.CENTER); // установка высоты и ширины ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, 200); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.rightToRight = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID; textView.setLayoutParams(layoutParams); constraintLayout.addView(textView); setContentView(constraintLayout); } }
Для сочетания нескольких значений также можно использовать вертикальную черту:
textView.setGravity(Gravity.BOTTOM | Gravity.CENTER);