it-swarm.com.ru

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

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

1318
vnshetty

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

1191
Matt Ball

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

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

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

236
Tapirboy

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

25
Umair

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

12
Olumide Oyetoke

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

Проверьте здесь для более. 

7
Koech

FILL_PARENT устарела на уровне API 8 и MATCH_PARENTuse API более высокого уровня

7
Avanish Kumar

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

5
Praveen Gaur

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

5
Xar E Ahmer

Когда вы задаете макет 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 (родительский hight) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp

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
user4696837

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. Надеюсь, он вам поможет.

4
Mansuu....

Для меня fill parent и match parent выполняет ту же функцию, только что:

fill parent: Использовался до API 8

match parent Используется из API 8 + Function of Both Заполняет родительское представление за исключением отступов.

3
Xcode

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

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

3
Nikita Prajapati

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

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

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

В текстовом представлении «Соответствие родителям» мы видим, как ширина макета распределяется по всей длине родительского элемента.

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

 Android Layout

3
Subarata Talukder

FILL_PARENT устарел с уровня API 8 и выше и переименован для старших версий в MATCH_PARENT

Оба идентичных FILL_PARENT и MATCH_PARENT, FILL_PARENT использовались в более низкой версии меньше, чем уровень API 8, а MATCH_PATENT используются в более высоком уровне API больше, чем 8. 

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

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

Для более подробной информации, пожалуйста, посетите это страницу

2
Utkarsh Srivastava

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

2
Sarvesh Thiruppathi

1. match_parent

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

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

Когда мы создаем layout.xml по умолчанию, мы имеем RelativeLayout в качестве родительского представления по умолчанию с Android: layout_width = "match_parent" и Android: layout_height = "match_parent", т.е. он занимает всю ширину и высоту экрана мобильного устройства. 

Также обратите внимание, что отступ применяется ко всем сторонам, 

Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"

Теперь давайте добавим вложенное представление LinearLayout и установим его layout_width = "match_parent" и layout_height = "match_parent", графическое представление будет отображать что-то вроде этого, 

match_parent_example 

Код

xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.Android.togglebuttonexample.MainActivity" >

Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="11dp"
Android:background="#FFFFEE"
Android:orientation="vertical" >

2. fill_parent:

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

Давайте сделаем те же шаги, что и для match_parent, вместо этого везде будем использовать fill_parent. 

Вы бы увидели, что нет различий в поведении как в fill_parent, так и в match parent. 

0
hossam scott