В чем разница между fill_parent и wrap_content?

В Android при компоновке виджетов в чем разница между fill_parent ( match_parent в API Level 8 и выше) и wrap_content ?

Есть ли какая-либо документация, на которой вы можете указать? Мне интересно понять это очень хорошо.

Solutions Collecting From Web of "В чем разница между fill_parent и wrap_content?"

Любой атрибут может применяться к горизонтальному или вертикальному размеру View (визуальный контроль). Он используется для установки размера представления или макета на основе либо его содержимого, либо размера его родительского макета, а не прямого указания размера.

fill_parent (устарел и переименован в MATCH_PARENT в API уровня 8 и выше)

Настройка макета виджета на fill_parent заставит его расширяться, чтобы заняться столько места, сколько доступно в элементе макета, в который он был помещен. Это примерно эквивалентно установке докстайла Windows Form Control для Fill .

Настройка макета верхнего уровня или управления fill_parent заставит его заняться всем экраном.

wrap_content

Установка размера View в wrap_content заставит его расширяться только достаточно далеко, чтобы содержать содержащиеся в нем значения (или дочерние элементы управления). Для элементов управления – например, текстовых полей (TextView) или изображений (ImageView) – это приведет к отображению текста или изображения. Для элементов макета он изменит размер макета, чтобы он соответствовал элементам управления / макетам, добавленным в качестве его дочерних элементов.

Это примерно эквивалентно установке свойства Autosize Windows Form Control в Autosize True.

Онлайн-документация

В документации по коду Android есть некоторые подробности.

  • FILL_PARENT (переименован в MATCH_PARENT в API уровня 8 и выше), что означает, что представление хочет быть таким же большим, как и его родительский (минус заполнение)

  • WRAP_CONTENT , что означает, что View хочет быть достаточно большим, чтобы заключить его содержимое (плюс дополнение)

fill_parent (устаревший) = match_parent
Граница дочернего представления расширяется, чтобы соответствовать границе родительского представления.

wrap_content
Граница детского просмотра плотно обтекает собственный контент.

Вот некоторые изображения, чтобы сделать вещи более ясными. Зеленый и красный – TextViews . Белый – это LinearLayout .

Введите описание изображения здесь

Для каждого View ( TextView , ImageView , 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 .

Смотрите также

  • Что означает android: layout_weight?
  • Разница между запасом и маркой View
  • Гравитация против layout_gravity

XML для изображений выше

Вертикальный 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 сделает ширину или высоту настолько большой, насколько это необходимо, чтобы содержать элементы внутри нее.

Нажмите здесь для ссылки ANDROID DOC

fill_parent :

Компонент компоновки компоновки для fill_parent будет обязательным для расширения, чтобы заполнить элементы модуля макета, насколько это возможно в пространстве. Это согласуется с свойством dockstyle элемента управления Windows. Верхний набор макетов или элемент управления для fill_parent заставит его занять весь экран.

wrap_content

Настроить представление размера wrap_content будет вынуждено просматривать, чтобы показать весь контент. Например, для элементов управления TextView и ImageView установлено, что wrap_content отобразит весь свой внутренний текст и изображение. Элементы макета будут изменять размер в соответствии с содержимым. Настройте представление размера атрибута wrap_content примерно эквивалентным для установки 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.