В чем разница между заполнением родительского и оберточного содержимого?



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



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

839   6  

6 ответов:

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

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

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

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

wrap_content

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

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

Документации

есть некоторые детали в документации кода Android здесь.

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

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

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

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

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

enter image description here

каждый View (a TextView, an 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>

Примечание

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

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

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

Нажмите здесь для Android DOC Reference

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_parentexpands вид to match the available space within the parent View, Fragment, or Activity.

Comments

    Ничего не найдено.