Jestem trochę zdezorientowany co do dwóch właściwości XML: match_parent
i fill_parent
. Wygląda na to, że oba są takie same. Czy jest jakaś różnica między nimi?
android
android-layout
vnshetty
źródło
źródło
Odpowiedzi:
Są takie same (w API Poziom 8+). Zastosowanie
match_parent
.http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
źródło
-1
. Czuję się lepiej, nie podoba mi się to, że ... :-)-1
. Wystąpił błąd, ponieważ starsza platforma nie wie o nowej nazwie tej samej stałej.Google zmieniło nazwę, aby uniknąć zamieszania.
Problem ze starą nazwą
fill parent
polegał na tym, że implikuje to, że wpływa ona na wymiary elementu nadrzędnego, amatch parent
lepiej opisuje wynikowe zachowanie - dopasowuje wymiar do elementu nadrzędnego.Obie stałe rozwiązują się
-1
na końcu, a więc powodują identyczne zachowanie w aplikacji. Jak na ironię, zmiana nazwy dokonana w celu wyjaśnienia rzeczy wydaje się wprowadzać zamieszanie, a nie go eliminować.źródło
Funkcjonalnie bez różnicy, Google właśnie zmienił nazwę z fill_parent na match_parent, z poziomu API 8 (Android 2.2). FILL_PARENT jest nadal dostępny ze względu na kompatybilność.
LayoutParams.FILL_PARENT
iLayoutParams.MATCH_PARENT
oba mają wartość -1. Nie jestem pewien, co skłoniło google do zmiany z Fill Parent na Match Parent :)Ponieważ większość
phones are >= Android 2.2
... powinieneś użyć Match Parent dla przyszłej kompatybilności ... nie jestem pewien, kiedy przestaną używać starszej stałej Fill Parent!źródło
Ze względu na kompatybilność lepiej trzymać się fill_parent, tzn. Gdy obsługujemy urządzenia z API poniżej 8. Ale jeśli twoja aplikacja jest ukierunkowana na API 8 i nowsze wersje, powinieneś użyć match_parent.
źródło
FILL_PARENT
jest przestarzałe (jak wspomniano powyżej Matt Ball), wówczas jedyną opcją dla zgodności z przodu jestMATCH_PARENT
.FILL_PARENT
jest przestarzałe na poziomie API 8 iMATCH_PARENT
używa interfejsu API wyższego poziomuźródło
match_parent jest używany zamiast fill_parent i ustawia go tak daleko, jak idzie rodzic. Po prostu użyj match_parent i zapomnij o fill_parent . Całkowicie porzuciłem fill_parent i wszystko jest jak zwykle idealne.
Sprawdź tutaj, aby uzyskać więcej.
źródło
Żeby nadać mu nazwę bliższą rzeczywistej akcji .
"fill_parent"
nie wypełnia pozostałego miejsca, jak sugeruje nazwa (do tego celu służy atrybut wagi). Zamiast tego zajmuje tyle miejsca, ile jego układ macierzysty. Właśnie dlatego nowa nazwa to"match_parent"
źródło
Oba mają podobną funkcjonalność, z tą różnicą, że parametr fill_parent jest używany do poziomu API 8, a match_parent jest używany po poziomie API 8 lub wyższym.
źródło
Kiedy ustawisz układ
width
iheight
jakmatch_parent
weXML
właściwości, zajmie on cały obszar, który ma widok rodzica, tzn. Będzie tak duży jak rodzic.Zając rodzic jest czerwony, a dziecko zielony. Dziecko zajmuje cały obszar. Ponieważ to jest
width
iheight
jestmatch_parent
.Uwaga: Jeśli rodzic zastosuje padding, to miejsce nie zostanie uwzględnione.
Więc TextView wzrost = 300dp (wzrost rodzica) - (20 (paddingTop) +10 (paddingBottom)) = (300-30) dp = 270 dp
fill_parent Vs match_parent
fill_parent
to poprzednia nazwamatch_parent
W przypadku interfejsu API poziomu 8 i wyższego
fill_parent
zmieniono jego nazwę na terazmatch_parent
ifill_parent
jest przestarzałe.Więc
fill_parent
imatch_parent
są takie same.Dokumentacja API dla fill_parent
Widok powinien być tak duży jak jego rodzic (minus dopełnienie). Ta stała jest przestarzała, począwszy od poziomu API 8 i jest zastępowana przez {@code match_parent}.
źródło
match_parent, co oznacza, że widok chce być tak duży jak jego rodzic (minus dopełnienie).
wrap_content, co oznacza, że widok chce być na tyle duży, aby zamknąć jego zawartość (plus dopełnienie)
Dla lepszej ilustracji stworzyłem przykładowy układ, który demonstruje tę koncepcję. Aby zobaczyć jego efekt, dodałem obramowanie każdej zawartości textView.
W tekście „Dopasuj element nadrzędny” możemy zobaczyć szerokość jego układu rozłożoną na całej długości elementu nadrzędnego.
Ale możemy zobaczyć w tekście „Zawiń zawartość” Wyświetlanie zawartości, szerokość układu zawinięta w długość jego treści (Zawiń zawartość).
źródło
match_parent
ifill_parent
są tą samą właściwością, używaną do definiowania szerokości lub wysokości widoku na pełnym ekranie w poziomie lub w pionie.Te właściwości są używane w takich plikach XML Androida.
lub
fill_parent
był używany w poprzednich wersjach, ale teraz jest przestarzały i zastąpiony przezmatch_parent
. Mam nadzieję, że ci to pomoże.źródło
fill_parent: Widok powinien być tak duży jak jego element nadrzędny.
teraz ta treść fill_parent jest przestarzała i zastępowana przez match_parent.
źródło
Dla mnie wypełnij element nadrzędny i dopasuj element nadrzędny wykonuje tylko tę samą funkcję, co:
Wypełnij element nadrzędny : był używany przed API 8
match parent To zostało użyte z API 8+ Funkcja Oba Wypełnia widok rodzica z boku dopełnienia
źródło
Nazwa FILL_PARENT została przemianowana na MATCH_PARENT na poziomie API 8 i wyższym, co oznacza, że widok chce być tak duży jak jego rodzic (minus dopełnienie) - Google
źródło
FILL_PARENT
jest przestarzałe od poziomu API 8 i wyższego, a dla wyższych wersji zmieniono jego nazwę naMATCH_PARENT
Obie są takie same
FILL_PARENT
iMATCH_PARENT
,FILL_PARENT
stosuje się w niższej wersji API mniejszej niż poziom 8 i MATCH_PATENT są stosowane w wyższych wyższego poziomu niż 8 API.FILL_PARENT
(przemianowanyMATCH_PARENT
na API Poziom 8 i wyższy), co oznacza, że widok chce być tak duży jak jego rodzic (minus dopełnienie)fill_parent
: Widok powinien być tak duży jak jego rodzic (minus dopełnienie). Ta stała jest przestarzała, począwszy od poziomu API 8 i jest zastępowana przezmatch_parent
.Aby uzyskać więcej informacji, odwiedź tę stronę
źródło
1. match_parent
Gdy ustawisz szerokość i wysokość układu jako match_parent, zajmie on cały obszar, który ma widok rodzica, tzn. Będzie tak duży jak rodzic.
Uwaga : Jeśli rodzic zastosuje padding, to miejsce nie zostanie uwzględnione.
Kiedy domyślnie tworzymy layout.xml, mamy RelativeLayout jako domyślny nadrzędny Widok z Androidem: layout_width = "match_parent" i android: layout_height = "match_parent", tj. Zajmuje całą szerokość i wysokość ekranu telefonu komórkowego.
Pamiętaj również, że wyściółka jest nakładana na wszystkie strony,
Teraz możemy dodać widok podrzędny LinearLayout i ustawia jego layout_width = "match_parent" i layout_height = "match_parent", widok graficzny wyświetlałby coś takiego,
match_parent_example
Kod
2. fill_parent:
Jest to to samo, co match_parent, fill_parent został amortyzowany na poziomie API 8, więc jeśli używasz API na poziomie 8 lub wyższym, musisz unikać używania fill_parent
Wykonajmy te same kroki, co w przypadku match_parent, po prostu użyj wszędzie fill_parent.
Zobaczysz, że nie ma różnicy w zachowaniu zarówno w rodzicach fill_parent, jak i match rodzic.
źródło