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

Я немного запутался в двух свойствах XML: match_parent и fill_parent. Кажется, что оба они одинаковы. Есть ли разница между ними?

Ответы

Ответ 1

Это одно и то же (в API 8+). Используйте match_parent.

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

...

fill_parent: представление должно быть таким же большим, как и его родительское (минус заполнение). Эта константа устарела, начиная с уровня API 8 и заменяется на match_parent.

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

Ответ 2

Google изменила имя, чтобы избежать путаницы.

Проблема со старым именем fill parent заключалась в том, что он подразумевает, что он влияет на размеры родителя, а match parent лучше описывает результирующее поведение - соответствует размеру с родительским.

Обе константы в конце концов решаются -1, и поэтому приводят к одинаковому поведению в приложении. Как ни странно, это изменение имени, сделанное для выяснения вещей, похоже, добавило путаницу, а не устранило ее.

Ответ 3

Функционально никакой разницы, Google только что изменил имя от fill_parent до match_parent, с уровня API 8 (Android 2.2). FILL_PARENT по-прежнему доступен по соображениям совместимости.

LayoutParams.FILL_PARENT и LayoutParams.MATCH_PARENT оба имеют значение -1. Не уверен, что соблазнил google для перехода от Fill Parent к Match Parent:)

Поскольку большая часть phones are >= Android 2.2.. вы должны использовать Match Parent для будущей совместимости... не уверены, когда они прекратят использование старой константы Fill Parent!

Ответ 4

Для обеспечения совместимости лучше придерживаться fill_parent, т.е. при поддержке ниже устройств API 8. Но если ваше приложение нацелено на API 8 и выше, вы должны использовать match_parent.

Ответ 5

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

fill_parent: представление должно быть таким же большим, как и его родительское (минус заполнение). Эта константа устарела, начиная с уровня API 8 и заменяется на MATCH_PARENT

В Android API 1,6 до 2.1 MATCH_PARENT выдается ошибка, поэтому используйте fill_parent в этих случаях. Чтобы поддерживать обратную совместимость, лучше использовать fill_parent

  • Оба являются статическими конечными константами, которые представляют значение -1
  • fill_parent устарел на уровне API 8

Итак, MATCH_PARENT и FILL_PARENT одинаковы?

Да, MATCH_PARENT и fill_parent являются просто разными именами констант для одного и того же целочисленного значения (-1, если вам интересно), используемого для указания режима представления макета в его родительском объекте.

Итак, почему был добавлен MATCH_PARENT?

Я помню, что Роман Гай (разработчик Android в Google) сказал, что они изменили имя, потому что "fill_parent" вводит в заблуждение разработчиков. В связи с тем, что "fill_parent" не заполняет оставшееся пространство (для этого вы используете атрибут веса), но он занимает столько же места, сколько и его родительский макет. Вот почему новое имя "MATCH_PARENT"

Ответ 6

MATCH_PARENT и FILL_PARENT совпадают?

Да, MATCH_PARENT и FILL_PARENT являются просто разными именами констант для одного и того же целочисленного значения (-1, если вам интересно), используемого для указания режима представления вида в его родительском объекте.

Итак, почему был добавлен MATCH_PARENT?

Команда Android обнаружила, что разработчики неправильно интерпретировали FILL_PARENT, чтобы означать, что View заполнит оставшееся пространство, оставшееся в его родительском. Фактически, указав FILL_PARENT, View запрашивает, чтобы он был таким же большим, как и его родитель. Таким образом (как объяснил сам Ромен Гай в этом видео около 10:56), константа была переименована в MATCH_PARENT, чтобы уточнить ее использование.

Хорошо, я понимаю, как работает FILL_PARENT/MATCH_PARENT. Какое это имеет значение, если я использую тот или иной?

FILL_PARENT устарел. Быть осужденным не делает его дьяволом, но в конце концов он уйдет. Ваше приложение более надежно, используя MATCH_PARENT. Зачем использовать устаревшую опцию, когда текущая опция ведет себя точно так же?

Кроме того, FILL_PARENT фактически вводит в заблуждение. Я лично видел людей в замешательстве, потому что это не работает так, как они думали. Фактически, я видел один тег, использующий как FILL_PARENT, так и MATCH_PARENT, потому что разработчик думал (по понятным причинам), что они представляют собой два разных режима макета.

КАК ВЫ МОЖЕТЕ ПОЛУЧИТЬ ПОТРЕБОВАТЬ, ЧТОБЫ ТРЕБУЕТСЯ FILL_PARENT?

Вот краткий пример того, как путаница MATCH_PARENT/FILL_PARENT может привести к тому, что люди многократно прикладывают головы к своим столам. Сначала сделайте действительно простой макет, содержащий несколько экземпляров View.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#FFFF00" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:background="@android:color/black"
        android:text="@string/hello_world"
        android:padding="50dp" />
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0000" />

</LinearLayout>

Ответ 7

FILL_PARENT устарел на уровне API 8 и MATCH_PARENT использует API более высокого уровня

Ответ 8

match_parent используется вместо fill_parent и устанавливает его для перехода до родителя. Просто используйте match_parent и забудьте о fill_parent. Я полностью отбросил fill_parent, и все отлично, как обычно.

Подробнее о здесь.

Ответ 9

Просто, чтобы дать ему имя ближе к нему действительное действие. "fill_parent" не заполняет оставшееся пространство, как подразумевалось бы имя (для этого вы используете атрибут weight). Вместо этого он занимает столько места, сколько его родительский макет. Поэтому новое имя "match_parent"

Ответ 10

Когда вы устанавливаете макет width и height как match_parent в свойстве XML, он будет занимать всю область, которая имеет родительское представление, т.е. она будет такой же большой, как и родительский.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

Родитель-постановщик красный, а ребенок - зеленый. Ребенок занимает всю площадь. Потому что width и height match_parent.

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

Примечание. Если для родителя применяется дополнение, то это пространство не будет включено.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0"
    android:paddingTop="20dp"
    android:paddingBottom="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

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

Итак, TextView hight = 300dp (высота родителя) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp

fill_parent Vs match_parent

fill_parent - это предыдущее имя match_parent

Для API уровня 8 и выше fill_parent, переименованного как match_parent и fill_parent, теперь не рекомендуется.

Итак, fill_parent и match_parent совпадают.

Документация API для fill_parent

Вид должен быть таким же большим, как и его родительский элемент (минус заполнение). Эта константа устарела, начиная с уровня API 8 и заменяется на {@code match_parent}.

Ответ 11

Оба имеют сходную функциональность, разница только в том, что fill_parent используется до уровня API 8, а match_parent используется после уровня API 8 или более высокого уровня.

Ответ 12

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

fill_parent: представление должно быть таким же большим, как и его родительское (минус заполнение). Эта константа устарела, начиная с уровня API 8 и заменяется match_parent

Для Android API от 1.6 до 2.1 match_parent выдаст вам ошибку, поэтому в этих случаях используйте fill_parent. Чтобы поддерживать обратную совместимость, лучше использовать fill_parent

Оба являются статическими конечными константами, которые представляют значение -1

FILL_PARENT устарел на уровне API 8

SO MATCH_PARENT И FILL_PARENT являются одинаковыми?

Да, MATCH_PARENT и FILL_PARENT - это просто разные постоянные имена для одного и того же целочисленного значения (-1, если вам интересно), используемый для указания режима макета Views в его родительском объекте.

SO ПОЧЕМУ ДОЛЖЕН БЫТЬ MATCH_PARENT?

Как сказал Роман Гай (разработчик Android в Google), они изменили имя, потому что "fill_parent" запутался для разработчиков. В связи с тем, что "fill_parent" не заполняет оставшееся пространство (для этого вы используете атрибут веса), но он принимает как

Ответ 13

match_parent и fill_parent - это те же свойства, которые используются для определения ширины или высоты представления в полноэкранном режиме по горизонтали или по вертикали.

эти свойства используются в файлах android xml, подобных этому.

 android:layout_width="match_parent"
    android:layout_height="fill_parent"

или

 android:layout_width="fill_parent"
        android:layout_height="match_parent"

fill_parent использовался в предыдущих версиях, но теперь он устарел и заменен на match_parent. Надеюсь, это поможет вам.

Ответ 14

fill_parent: представление должно быть размером с родительский.

теперь этот контент fill_parent устарел и заменен match_parent.

Ответ 15

Мне заполнить родительский и сопоставить родительский выполняет ту же функцию, что:

заполнить родительский: Был использован до API 8

сопоставить родительский Это использовалось из API 8+ Функция обоих Заполняет родительский вид в сторону прокладки

Ответ 16

match_parent, что означает, что представление хочет быть таким же большим, как и его родительский элемент (минус заполнение).

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

Для лучшей иллюстрации я создал образец макета, который демонстрирует эту концепцию. Чтобы увидеть эффект, я добавил границу каждого содержимого textView.

В содержимом textView "Match parent" мы видим, что ширина макета, распределенная из его родительской цепочки, может быть увеличена.

Но мы можем видеть в содержимом textView "Wrap Content", ширину макета, завернутую в его содержимое (Wrap Content).

Android Layout

Ответ 17

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