Меня немного смущают два свойства XML: match_parent
и fill_parent
. Кажется, что оба одинаковы. Есть ли разница между ними?
android
android-layout
vnshetty
источник
источник
Ответы:
Это одно и то же (в API уровня 8+). Использование
match_parent
.http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
источник
-1
. Если вы чувствуете себя лучше по этому поводу, я тоже не получаю приличия ... :-)-1
. Вы получаете ошибку, потому что старая платформа не знает о новом имени той же самой константы.Google изменил имя, чтобы избежать путаницы.
Проблема со старым именем
fill parent
заключалась в том, что оно подразумевает, что оно влияет на измерения родительского элемента, в то время какmatch parent
лучше описывается получающееся поведение - сопоставьте измерение с родительским.Обе константы разрешаются
-1
в конце, и поэтому приводят к одинаковому поведению в приложении. По иронии судьбы, это изменение имени, внесенное для разъяснения вещей, скорее, добавило путаницу, чем устранило ее.источник
Функционально без разницы 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!источник
Для совместимости лучше придерживаться fill_parent, т.е. при поддержке устройств ниже API 8. Но если ваше приложение предназначено для API 8 и выше, вы должны использовать match_parent.
источник
FILL_PARENT
это устарело (как упомянуто Мэттом Боллом выше), то единственная опция для прямой совместимости - этоMATCH_PARENT
.FILL_PARENT
устарела на уровне API 8 иMATCH_PARENT
использует API более высокого уровняисточник
match_parent используется вместо fill_parent и устанавливает его так далеко, как родительский. Просто используйте match_parent и забудьте о fill_parent . Я полностью отказался от fill_parent, и все идеально, как обычно.
Проверьте здесь для больше.
источник
Просто чтобы дать ему имя ближе к его действию .
"fill_parent"
не заполняет оставшееся место, как следует из названия (для этого вы используете весовой атрибут). Вместо этого он занимает столько же места, сколько родительский макет. Вот почему новое имя"match_parent"
источник
Оба имеют схожую функциональность, единственное отличие состоит в том, что fill_parent используется до уровня API 8, а match_parent используется после уровня API 8 или выше.
источник
Когда вы устанавливаете макет
width
иheight
какmatch_parent
вXML
свойстве, он будет занимать всю область, которую имеет родительское представление, то есть оно будет таким же большим, как родительское представление.Заяц родитель красный, а ребенок зеленый. Ребенка занимают все области. Потому что это
width
иheight
естьmatch_parent
.Примечание. Если для родительского элемента применяется отступ, то это пространство не будет включено.
Поэтому 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}.
источник
match_parent, что означает, что представление хочет быть таким же большим, как его родитель (минус отступ).
wrap_content, что означает, что представление хочет быть достаточно большим, чтобы заключить его содержимое (плюс заполнение)
Для лучшей иллюстрации я создал образец макета, который демонстрирует эту концепцию. Чтобы увидеть его эффект, я добавил границы каждого содержимого textView.
В текстовом представлении «Соответствие родителя» мы видим, как ширина макета распределяется по всей длине родительского элемента.
Но мы можем видеть в текстовом представлении «Wrap Content» его ширину макета, завернутую в длину его содержимого (Wrap Content).
источник
match_parent
иfill_parent
являются тем же свойством, используемым для определения ширины или высоты просмотра в полноэкранном режиме по горизонтали или вертикали.Эти свойства используются в XML-файлах Android, как это.
или
fill_parent
использовался в предыдущих версиях, но теперь он устарел и заменен наmatch_parent
. Я надеюсь, что это поможет вам.источник
fill_parent: представление должно быть таким же большим, как его родитель.
теперь этот контент fill_parent устарел и заменен на match_parent.
источник
Для меня заполнить родительский и сопоставить родительский выполняет ту же функцию, только что:
заполнить родительский : использовался до API 8
match parent Это было использовано из API 8+. Функция Both Заполняет родительское представление кроме отступов.
источник
FILL_PARENT был переименован в MATCH_PARENT в API уровня 8 и выше, что означает, что представление хочет быть таким же большим, как его родитель (минус отступ) - Google
источник
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
.Для более подробной информации, пожалуйста, посетите эту страницу
источник
1. match_parent
Когда вы устанавливаете ширину и высоту макета как match_parent, он будет занимать всю область, которую имеет родительское представление, то есть он будет таким же большим, как родительский.
Примечание . Если для родительского элемента применяется отступ, то это пространство не будет включено.
Когда мы создаем layout.xml по умолчанию, мы имеем RelativeLayout в качестве родительского View по умолчанию с android: layout_width = "match_parent" и android: layout_height = "match_parent", т.е. он занимает всю ширину и высоту экрана мобильного устройства.
Также обратите внимание, что дополнение применяется ко всем сторонам,
Теперь давайте добавим вспомогательное представление LinearLayout и установим его layout_width = "match_parent" и layout_height = "match_parent", графическое представление будет отображать что-то вроде этого,
match_parent_example
Код
2. fill_parent:
Это то же самое, что match_parent, fill_parent устарел на уровне API 8. Поэтому, если вы используете API уровня 8 или выше, вы должны избегать использования fill_parent
Давайте сделаем те же шаги, что и для match_parent, вместо этого везде будем использовать fill_parent.
Вы увидите, что нет различий в поведении как в fill_parent, так и в match parent.
источник