В Android при компоновке виджетов, какая разница между fill_parent (match_parent в API уровня 8 и выше) и wrap_content?
Есть ли документация, на которую можно указать? Мне интересно это понять.
Любой атрибут может применяться к горизонтальному или вертикальному размеру представления (визуальный контроль). Он используется для установки размера представления или макета на основе его содержимого или размера его родительского макета, а не явного указания размера.
fill_parent (устарело и переименовано в MATCH_PARENT в API уровня 8 и выше)
Установка макета виджета на fill_parent заставит его расшириться, чтобы занять столько места, сколько доступно в элементе макета, в который он был помещен. Это примерно эквивалентно установке стиля док-станции элемента управления Windows Form на Fill.
Установка макета верхнего уровня или элемента управления на fill_parent заставит его занять весь экран.
wrap_content
Установка размера представления на wrap_content заставит его расшириться настолько, чтобы вместить значения (или дочерние элементы управления), которые он содержит. Для элементов управления, таких как текстовые поля (TextView) или изображения (ImageView), это будет переносить отображаемый текст или изображение. Для элементов макета он изменит размер макета, чтобы он соответствовал элементам управления / макетам, добавленным в качестве его дочерних элементов.
Это примерно эквивалентно установке свойства Autosize элемента управления Windows Form в значение True.
Онлайн-документация
Некоторые подробности можно найти в документации по коду Android здесь.
что, если ширина изображения больше ширины экрана, и я установил ширину просмотра изображения как fill_parent. будет ли изображение сжато до размера экрана?
@JohnWatson ты нашел свой ответ? Мне тоже любопытно.
Полезно знать упомянутые эквивалентные свойства элемента управления Windows Form.
Что вы видели @JohnWatson? Какая у тебя история? Какой ответ ?
fill_parent сделает ширину или высоту элемента равной
размером с родительский элемент, другими словами, контейнер.
wrap_content сделает ширину или высоту настолько большой, насколько это необходимо для
содержать элементы внутри него.
Нажмите здесь, чтобы получить справку по ANDROID DOC
какой будет контейнер? как окружить представления разными контейнерами?
fill_parent:
Компонент скомпонованного макета для fill_parent будет обязательно расширять, чтобы заполнить элементы устройства макета, насколько это возможно в пространстве. Это соответствует свойству dockstyle элемента управления Windows. Верхний макет или элемент управления для fill_parent заставит его занять весь экран.
wrap_content
Настройка просмотра размера wrap_content будет принудительно расширена для отображения всего содержимого. Например, для элемента управления TextView и ImageView установлено значение wrap_content, и будет отображаться весь внутренний текст и изображение. Элементы макета изменят размер в соответствии с содержимым. Настройте представление размера атрибута Autosize wrap_content, примерно эквивалентного значению True для элемента управления Windows.
Для подробностей, пожалуйста, перейдите по этой ссылке: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
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.
Вертикальный 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был переименован вmatch_parentв API уровня 8 и выше.