Класс FrameLayout
Класс FrameLayout наследует
View
и рисует дочерние элементы в одной прямоугольной области.
Позже добавленный View перекрывает ранние.
Положение внутри задают android:layout_gravity
со значениями из
Gravity.
Похож на
Box в Compose.
Синтаксис
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- stacked views -->
</FrameLayout>
Параметры
| Параметр | Описание |
|---|---|
android:layout_width |
Ширина области стопки. |
android:layout_height |
Высота области стопки. |
android:foregroundGravity |
Положение foreground drawable контейнера. |
android:padding |
Отступ для дочерних View. |
Пример
Давайте положим текст поверх цветного View:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#BDBDBD" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="abcde" />
</FrameLayout>
На экране серая плашка заполнит область,
а текст "abcde" окажется по центру поверх неё.
Пример
Давайте прижмём подпись к нижнему краю:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="120dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@android:drawable/ic_menu_gallery"
android:contentDescription="12345" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:text="12345" />
</FrameLayout>
На экране картинка займёт фон,
текст "12345" встанет по центру снизу.
Смотрите также
-
класс
LinearLayout,
который ставит View в ряд, а не в стопку -
класс
ConstraintLayout,
который позиционирует View привязками -
функция
Box,
наложение в Compose -
класс
Gravity,
для layout_gravity внутри FrameLayout