В Android, при компоновке виджетов, какая разница между fill_parent
(match_parent
в уровне API 8 и выше) и wrap_content
?
Есть ли какая-либо документация, на которой вы можете указать? Мне очень интересно это понимать.
В Android, при компоновке виджетов, какая разница между fill_parent
(match_parent
в уровне API 8 и выше) и wrap_content
?
Есть ли какая-либо документация, на которой вы можете указать? Мне очень интересно это понимать.
Любой атрибут может быть применен к горизонтальному или вертикальному размеру View (визуальный контроль). Он использовался для установки размера представления или макета на основе либо его содержимого, либо размера его родительского макета, а не прямого указания размера.
fill_parent
(устарело и переименовано MATCH_PARENT
в API 8 и выше)
Настройка макета виджета на fill_parent заставит его расширяться, чтобы занимать столько места, сколько доступно в элементе макета, в который он был помещен. Это примерно эквивалентно установке докстайма элемента управления Windows Form для Fill
,
Настройка макета верхнего уровня или управления для fill_parent заставит его занять весь экран.
wrap_content
Настройка размера представления для wrap_content заставит его расширяться только достаточно далеко, чтобы содержать содержащиеся в нем значения (или дочерние элементы управления). Для элементов управления - например, текстовых полей (TextView) или изображений (ImageView) - это приведет к отображению текста или изображения. Для элементов макета он изменит размер макета, чтобы он соответствовал элементам управления/макетам, добавленным в качестве его дочерних элементов.
Это примерно эквивалентно установке для свойства Windows Form Control Autosize
значения True.
Онлайн-документация
Вот некоторые подробности в документации по коду Android здесь.
FILL_PARENT
(переименован MATCH_PARENT
в
API уровня 8 и выше), что означает
что View хочет быть таким же большим, как
его родительский (минус заполнение)
WRAP_CONTENT
, что означает, что
Взгляд хочет быть достаточно большим, чтобы
заключить его содержимое (плюс дополнение)
fill_parent
(устарело) = match_parent
Граница дочернего представления расширяется, чтобы соответствовать границе родительского представления.
wrap_content
Граница детского просмотра плотно обтекает собственный контент.
Вот некоторые изображения, чтобы сделать вещи более ясными. Зеленый и красный - TextViews
. Белый цвет показывает LinearLayout
.
Каждый View
(a TextView
, a ImageView
, a Button
и т.д.) должен установить width
и height
представления. В файле макета xml это может выглядеть так:
android:layout_width="wrap_content"
android:layout_height="match_parent"
Помимо установки ширины и высоты на match_parent
или wrap_content
, вы также можете установить их в абсолютное значение:
android:layout_width="100dp"
android:layout_height="200dp"
Как правило, это не так хорошо, потому что оно не так гибко для устройств разного размера. После того, как вы поняли wrap_content
и match_parent
, следующее следующее: layout_weight
.
Вертикальный LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=wrap height=wrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=wrap"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=match"
android:background="#c5e1b0"/>
</LinearLayout>
Горизонтальный LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapWrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapMatch"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MatchMatch"
android:background="#c5e1b0"/>
</LinearLayout>
Объяснение в этом ответе предполагает, что нет поля или отступов. Но даже если есть, базовая концепция остается прежней. Граница/интервал просмотра просто корректируется на значение поля или отступов.
fill_parent
сделает ширину или высоту элемента равным
большой как родительский элемент, иными словами, контейнер.
wrap_content
сделает ширину или высоту настолько большой, насколько это необходимо для
содержат элементы внутри него.
fill_parent
:
Компонент компоновки компоновки для fill_parent
будет обязательным для расширения, чтобы заполнить элементы модуля макета, насколько это возможно в пространстве. Это согласуется с свойством dockstyle элемента управления Windows. Верхний набор макетов или управление до fill_parent
заставит его занять весь экран.
wrap_content
Настроить представление размера wrap_content
, которое будет принудительно просмотрено, будет расширено, чтобы отобразить все содержимое. Элементы TextView и ImageView, например, установлены на wrap_content
, будут отображать весь свой внутренний текст и изображение. Элементы макета будут изменять размер в соответствии с содержимым. Настройте представление размера атрибута Autosize wrap_content
примерно эквивалентно установке элемента управления Windows для True.
Подробнее Пожалуйста, ознакомьтесь с этой ссылкой: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
wrap_content устанавливает размер представления в minimum required to contain the contents it displays.
match_parent expands
Просмотр to match the available space within the parent View, Fragment, or Activity.