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

Ширина и высота элементов

16.01.2025

Все визуальные элементы в Android упорядочиваются на экране с помощью контейнеров. Основные классы контейнеров: RelativeLayout, LinearLayout, GridLayout, TableLayout, ConstraintLayout, FrameLayout.

Элементы внутри контейнера организуются с помощью параметров разметки. Для задания в XML файле используются атрибуты, начинающиеся с префикса layout_, например: layout_width и layout_height.

Опции для задания размеров

  1. match_parent Растягивает элемент до размеров контейнера (в ConstraintLayout вместо match_parent используется 0dp).

  2. wrap_content Элемент принимает минимальные размеры, достаточные для отображения содержимого.

  3. Точные размеры Указываются в конкретных единицах, например 96dp.


match_parent

Значение match_parent растягивает элемент до размеров контейнера. Например:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Hello World!"
        android:textSize="30sp"
        android:background="#e0e0e0" />
     
</LinearLayout>

Особенности

  • match_parent применяется ко всем встроенным контейнерам, кроме ConstraintLayout.

  • Для ConstraintLayout вместо match_parent используется 0dp.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Hello World!"
        android:textSize="30sp"
        android:background="#e0e0e0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

wrap_content

Значение wrap_content задаёт размеры, достаточные для отображения содержимого элемента.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:textSize="30sp"
        android:background="#ffcdd2"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Точные размеры

Для задания точных размеров указываются значения в единицах, например, dp:

<TextView
    android:layout_width="150dp"
    android:layout_height="90dp"
    android:text="Hello World!"
    android:textSize="30sp"
    android:background="#e0e0e0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

Можно также комбинировать значения, например, задать фиксированную высоту и растяжение по ширине содержимого:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="80dp"
    android:text="Hello World!"
    android:textSize="30sp"
    android:background="#e0e0e0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

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

Для ограничения размеров используются атрибуты minWidth, maxWidth, minHeight, maxHeight.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="200dp"
    android:maxWidth="250dp"
    android:minHeight="100dp"
    android:maxHeight="200dp"
    android:text="Hello World!"
    android:textSize="30sp"
    android:background="#e0e0e0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

Программная установка ширины и высоты

Для создания элементов в коде и управления их размерами используется метод setLayoutParams().

Пример кода

package com.example.viewapp;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
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(26);

        // Установка параметров размеров
        ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(
            ConstraintLayout.LayoutParams.WRAP_CONTENT,
            ConstraintLayout.LayoutParams.WRAP_CONTENT
        );
        layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
        layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
        textView.setLayoutParams(layoutParams);

        // Добавление TextView в ConstraintLayout
        constraintLayout.addView(textView);
        setContentView(constraintLayout);
    }
}

Параметры LayoutParams

  • WRAP_CONTENT

  • MATCH_PARENT

Можно также задавать точные размеры

ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT,
    200
);
PreviousОпределение размеровNextВнутренние и внешние отступы

Last updated 4 months ago