Какая разница между fill_parent и wrap_content?

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

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

Ответы

Ответ 1

Любой атрибут может быть применен к горизонтальному или вертикальному размеру 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 здесь.

Ответ 2

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

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

Ответ 3

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

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

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

enter image description here

Каждый 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.

См. также

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>

Примечание

Объяснение в этом ответе предполагает, что нет поля или отступов. Но даже если есть, базовая концепция остается прежней. Граница/интервал просмотра просто корректируется на значение поля или отступов.

Ответ 4

  • fill_parent сделает ширину или высоту элемента равным большой как родительский элемент, иными словами, контейнер.

  • wrap_content сделает ширину или высоту настолько большой, насколько это необходимо для содержат элементы внутри него.

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

Ответ 5

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

Ответ 6

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.