💀
Второй курс РПО
Android
Android
  • Глава 1. Начало работы с Android
    • Начало работы с Android
    • Первый проект в Android Studio
    • Создание графического интерфейса
  • Глава 2. Основы создания интерфейса
    • Основы создания интерфейса
    • Определение интерфейса в файле XML. Файлы layout
    • Определение размеров
    • Ширина и высота элементов
    • Внутренние и внешние отступы
    • ConstraintLayout
    • Размеры элементов в ConstraintLayout
    • Цепочки элементов в ConstraintLayout
    • Программное создание ConstraintLayout и позиционирование
Powered by GitBook
On this page
  • Пример кода
  • Рекомендации:
  • Минимальные и максимальные размеры
  • Размеры в процентах
  • Соотношение высоты и ширины
  1. Глава 2. Основы создания интерфейса

Размеры элементов в ConstraintLayout

16.01.2025

В ConstraintLayout применяются три способа установки размеров:

  1. Точные размеры, например, 123dp.

  2. Значение WRAP_CONTENT, которое задает размеры, достаточные для размещения содержимого.

  3. Значение 0dp, эквивалентное MATCH_CONSTRAINT в коде Java. В этом случае размеры элемента определяются его ограничениями и, по умолчанию, занимают всё доступное пространство.

Пример кода

<?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:layout_width="160dp"
        android:layout_height="wrap_content"
        android:text="Top TextView"
        android:textSize="30sp"
        android:background="#e0e0e0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
 
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Center TextView"
        android:textSize="30sp"
        android:background="#e0e0e0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bottom TextView"
        android:textSize="30sp"
        android:background="#e0e0e0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>
 
</androidx.constraintlayout.widget.ConstraintLayout>

Описание:

  1. Верхний TextView имеет точную ширину 160dp.

  2. Центральный TextView имеет ширину 0dp и растягивается на всё доступное пространство.

  3. Нижний TextView использует wrap_content, занимая минимальную ширину для своего содержимого.


Рекомендации:

  • Избегайте использования match_parent в виджетах внутри ConstraintLayout. Используйте 0dp (или MATCH_CONSTRAINT) с ограничениями.

Пример растяжения элемента:

По ширине:

android:layout_width="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

По высоте:

android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"

Минимальные и максимальные размеры

  • Минимальные размеры: layout_constraintWidth_min и layout_constraintHeight_min.

  • Максимальные размеры: layout_constraintWidth_max и layout_constraintHeight_max.

Пример:

<TextView
    android:layout_width="260dp"
    android:layout_height="wrap_content"
    android:text="Hello Android"
    app:layout_constraintWidth_max="200dp"
    app:layout_constraintHeight_max="200dp"
    app:layout_constraintWidth_min="wrap"
    app:layout_constraintHeight_min="wrap"/>

В данном случае ширина TextView не превысит 200dp.


Размеры в процентах

Используются атрибуты:

  • layout_constraintWidth_percent

  • layout_constraintHeight_percent

Условия:

  1. Размер (layout_width или layout_height) должен быть 0dp (или MATCH_CONSTRAINT).

  2. Для ширины: app:layout_constraintWidth_default="percent". Для высоты: app:layout_constraintHeight_default="percent".

Пример:

<TextView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="Hello Android"
    app:layout_constraintWidth_default="percent"
    app:layout_constraintHeight_default="percent"
    app:layout_constraintWidth_percent="0.5"
    app:layout_constraintHeight_percent="0.25"/>

Соотношение высоты и ширины

Атрибут layout_constraintDimensionRatio задаёт соотношение Width:Height.

Пример:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:text="Hello Android"
    app:layout_constraintDimensionRatio="1:0.6"/>
  • Ширина элемента будет зависеть от содержимого, а высота составит 60% от ширины.

Пример с указанием ориентации:

<TextView
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintDimensionRatio="W, 1:4"/>

Здесь ширина будет в 4 раза меньше высоты.

PreviousConstraintLayoutNextЦепочки элементов в ConstraintLayout

Last updated 4 months ago