В чем разница между 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).
Ответ 17
FILL_PARENT был переименован в MATCH_PARENT в API 8 и выше, что означает, что представление хочет быть таким же большим, как и его родительский (минус заполнение) - Google