в чем разница между fill\_parent и wrap\_content?

<p>в android при разметке виджетов, в чем разница между <code>fill\_parent</code> (<code>match\_parent</code> в api уровня 8 и выше) и <code>wrap\_content</code>?</p><p>есть ли документация, на которую вы можете указать? мне интересно понять это очень хорошо.</p>

<p>любой атрибут может быть применен к горизонтальному или вертикальному размеру view (визуальный контроль). он используется для установки размера представления или макетов на основе его содержимого или размера родительского макета, а не для явного указания размера.</p><p><strong><code>fill\_parent</code></strong> (устарело и переименовано в <code>match\_parent</code> в api уровня 8 и выше)</p><p>установка макета виджета на fill\_parent заставит его расширяться, занимая столько места, сколько доступно в элементе макета, в который он был помещен. это примерно эквивалентно установке стиля закрепления элемента управления windows form на <code>fill</code>.</p><p>установка макета верхнего уровня или элемента управления для fill\_parent заставит его занять весь экран.</p><p><strong><code>wrap\_content</code></strong></p><p>установка размера представления в wrap\_content заставит его расширяться только настолько, чтобы содержать значения (или дочерние элементы управления), которые он содержит. для элементов управления - таких как текстовые поля (textview) или изображения (imageview) - это обернет отображаемый текст или изображение. для элементов макета он изменит размер макета в соответствии с элементами управления/макетами, добавленными в качестве его дочерних элементов.</p><p>это примерно эквивалентно установке свойства <code>autosize</code> элемента управления windows form в true.</p><p><strong> электронная документация </strong></p><p>в документации к коду android есть некоторые детали <a href="http://developer.android.com/reference/android/view/viewgroup.layoutparams.html">здесь</a> .</p>

<p><strong><code>fill\_parent</code></strong> (устарело) <strong> = <code>match\_parent</code> </strong><br> граница дочернего представления расширяется, чтобы соответствовать границе родительского представления.</p><p><strong><code>wrap\_content</code></strong><br> граница дочернего представления обтягивает свое собственное содержимое.</p><p>вот несколько изображений, чтобы прояснить ситуацию. зеленый и красный являются <code>textviews</code>. белый <code>linearlayout</code> показывает сквозной.</p><p><img src="https://i.stack.imgur.com/9xhsl.png" alt="enter image description here"></p><p>каждому <code>view</code> (<code>textview</code>, <code>imageview</code>, <code>button</code> и т.д.) необходимо установить <code>width</code> и <code>height</code> представления. в файле макета xml это может выглядеть так:</p><pre><code>android:layout\_width="wrap\_content" android:layout\_height="match\_parent" </code></pre><p>помимо установки ширины и высоты <code>match\_parent</code> или <code>wrap\_content</code>, вы также можете установить для них некоторое абсолютное значение:</p><pre><code>android:layout\_width="100dp" android:layout\_height="200dp" </code></pre><p>как правило, это не так хорошо, потому что это не так гибко для устройств разных размеров. после того, как вы поняли <code>wrap\_content</code> и <code>match\_parent</code>, следующая вещь, которую нужно изучить, - <code>layout\_weight</code>.</p><h1>смотрите также</h1><ul> <li> <a href="https://stackoverflow.com/a/29713797/3681880">что означает android: layout\_weight?</a> </li> <li> <a href="https://stackoverflow.com/a/25520320/3681880">разница между отступами представления и полем</a> </li> <li> <a href="https://stackoverflow.com/a/26190050/3681880">gravity vs layout\_gravity</a> </li> </ul><h1>xml для изображений выше</h1><p>вертикальный linearlayout</p><pre><code><?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> </code></pre><p>горизонтальная linearlayout</p><pre><code><?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> </code></pre><h1>заметка</h1><p>объяснение в этом ответе предполагает, что нет <a href="https://stackoverflow.com/a/25520320/3681880">поле или отступ</a> . но даже если и есть, основная концепция остается той же. граница/интервал просмотра просто корректируется по значению поля или отступов.</p>

<ul> <li> <p><code>fill\_parent</code> сделает ширину или высоту элемента такой же большой, как родительский элемент, другими словами, контейнер.</p> </li> <li> <p><code>wrap\_content</code> сделает ширину или высоту настолько большими, насколько это необходимо для содержания элементов внутри нее.</p> </li> </ul><p> <a href="http://developer.android.com/reference/android/view/viewgroup.layoutparams.html">нажмите здесь для ссылки android doc</a> </p>

<p><strong><code>fill\_parent</code></strong>:</p><p>компонент компоновки компоновки для <code>fill\_parent</code> будет обязательно расширяться, чтобы заполнить элементы компоновки как можно больше в пространстве. это согласуется со свойством dockstyle элемента управления windows. верхний набор макета или элемента управления <code>fill\_parent</code> заставит его занять весь экран.</p><p><strong><code>wrap\_content</code></strong></p><p>настроить представление размера <code>wrap\_content</code> будет принудительно для просмотра расширена, чтобы показать все содержимое. например, для элементов управления <strong> textview и imageview </strong> установлено значение <code>wrap\_content</code>, в которых будет отображаться весь внутренний текст и изображение. элементы макета изменят размер в соответствии с содержимым. настройте представление размера атрибута autosize <code>wrap\_content</code>, примерно эквивалентного настройке элемента управления windows для true.</p><p>для получения дополнительной информации, пожалуйста, проверьте эту ссылку: <a href="http://developer.android.com/reference/android/view/viewgroup.layoutparams.html">http://developer.android.com/reference/android/view/viewgroup.layoutparams.html</a> </p>