В чем разница между match_parent и fill_parent? - PullRequest
1351 голосов
/ 23 апреля 2011

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

Ответы [ 16 ]

1208 голосов
/ 23 апреля 2011

Это одно и то же (в 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

241 голосов
/ 11 декабря 2012

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

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

Обе константы в конечном итоге преобразуются в -1, что приводит к идентичному поведению в приложении.По иронии судьбы, это изменение имени, внесенное для разъяснения вещей, скорее, добавило путаницу, чем устранило ее.

26 голосов
/ 20 сентября 2012

Функционально никакой разницы, 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!

12 голосов
/ 02 июля 2012

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

8 голосов
/ 01 марта 2016

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

Проверьте здесь для получения дополнительной информации.

8 голосов
/ 24 сентября 2015

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

6 голосов
/ 22 марта 2017

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

6 голосов
/ 17 апреля 2014

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

4 голосов
/ 07 августа 2017

Когда вы задаете макет 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.

enter image description here

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

<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>

enter image description here

То есть TextView hight = 300dp (родительский уровень) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) дп = 270 дп

fill_parent и 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}.

4 голосов
/ 03 февраля 2017

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

Эти свойства используются в XML-файлах Android, как это.

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

или

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...