Gravity

Последнее обновление: 15.10.2021

Атрибут 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>
Gravity в Android Studio

При необходимости мы можем комбинировать значения, разделяя их вертикальной чертой:

<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 right bottom в Android

Программная установка gravity

Чтобы установить параметр 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);
    }
}
Программная установка layout_gravity в Android

Для сочетания нескольких значений также можно использовать вертикальную черту:

textView.setGravity(Gravity.BOTTOM | Gravity.CENTER);
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850