Jaka jest różnica między match parent a fill parent?
Jestem trochę zdezorientowany co do dwóch właściwości XML: match_parent
i fill_parent
. Wydaje się, że oba są takie same. Czy jest między nimi jakaś różnica?
17 answers
To to samo (na poziomie API 8+). Użyj match_parent
.
FILL_PARENT (zmienił nazwę na MATCH_PARENT w API na poziomie 8 i wyższym), co oznacza, że widok chce być tak duży jak jego rodzic (minus wypełnienie)
...
fill_parent
: widok powinien być tak duży jak jego rodzic (minus wypełnienie). Stała ta jest przestarzała począwszy od poziomu API 8 i jest zastępowana przezmatch_parent
.
Http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-23 03:33:49
Google zmieniło nazwę, aby uniknąć nieporozumień.
Problem ze starą nazwą fill parent
polegał na tym, że implikuje ona wpływanie na wymiary rodzica, podczas gdy match parent
lepiej opisuje wynikowe zachowanie - dopasuj wymiar do rodzica.
Obie stałe rozwiązują się na końcu do -1
, co skutkuje identycznym zachowaniem w aplikacji. Jak na ironię, ta zmiana nazwy dokonana w celu wyjaśnienia rzeczy wydaje się dodawać zamieszanie, a nie eliminować go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 09:30:08
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
i LayoutParams.MATCH_PARENT
oba mają wartość -1. Nie wiem co skusiło google do zmiany z Fill Parent na Match Parent :)
Od większości phones are >= Android 2.2
.. dla przyszłej zgodności należy użyć Match Parent... nie jestem pewien, kiedy przestaną stosować starszą stałą rodzica Fill!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-20 07:25:40
Ze względu na kompatybilność lepiej trzymać się fill_parent, tzn. gdy obsługujemy poniżej API 8 urządzeń. Ale jeśli Twoja aplikacja ma API 8 i wyższe, powinieneś użyć match_parent zamiast tego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 11:23:06
fill_parent
(zmiana nazwy MATCH_PARENT
na poziomie API8 i wyżej), co oznacza, że widok chce być tak duży jak jego rodzic (minus padding)
fill_parent
: widok powinien być tak duży jak jego rodzic (minus wypełnienie). Ta stała jest przestarzała, począwszy od poziomu API 8 i zastępuje się przez match_parent
Dla Android API 1.6 na 2.1 match_parent
spowoduje błąd, więc użyj fill_parent
w takich przypadkach. Aby wspierać kompatybilność wsteczną, lepiej jest użyć fill_parent
- obie są statycznymi stałymi końcowymi, które reprezentują wartość -1
-
FILL_PARENT
jest przestarzały na poziomie API 8
Więc MATCH_PARENT i FILL_PARENT są takie same?
Tak, MATCH_PARENT
i FILL_PARENT
są po prostu różnymi stałymi nazwami dla tej samej wartości całkowitej (-1 jeśli jesteś ciekawy) używanymi do określenia trybu układu widoku w jego rodzicu.
Dlaczego dodano MATCH_PARENT?
Pamiętam, że Roman Guy (Android Developer w Google) powiedział, że zmienili nazwę, ponieważ "fill_parent
" było mylące dla programistów. W rzeczywistości, "fill_parent
" nie wypełnia pozostałej przestrzeni (do tego używasz atrybutu weight), ale zajmuje tyle miejsca, co jego układ macierzysty. Dlatego nowa nazwa brzmi "match_parent
"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-23 07:19:10
MATCH_PARENT
i FILL_PARENT
są takie same?
Tak, MATCH_PARENT
i FILL_PARENT
są po prostu różnymi stałymi nazwami dla tej samej wartości całkowitej (-1 jeśli jesteś ciekawy) używanymi do określenia trybu układu widoku w jego rodzicu.
Dlaczego więc Dodano MATCH_PARENT
?
Zespół Android odkrył, że programiści błędnie interpretowali FILL_PARENT
, aby oznaczać, że View
wypełni pozostałą przestrzeń w rodzicu. W rzeczywistości, poprzez podanie FILL_PARENT
, View
jest tak duże, jak jego rodzic.
Rozumiem, jak działa. Jakie to ma znaczenie, jeśli używam jednego lub drugiego?
FILL_PARENT
jest przestarzały. Bycie deprecated nie czyni z niego diabła, ale w końcu odejdzie. Twoja aplikacja jest bardziej przyszłościowa przy użyciu MATCH_PARENT
. Po co używać przestarzałej opcji, gdy bieżąca opcja zachowuje się dokładnie tak samo?
Ponadto, {[2] } jest rzeczywiście mylące. Osobiście widziałem ludzi zdezorientowanych, bo to nie działa tak, jak myśleli would. W rzeczywistości widziałem pojedynczy znacznik używający zarówno FILL_PARENT
, jak i MATCH_PARENT
, ponieważ deweloper pomyślał (co zrozumiałe), że są to dwa różne tryby układu.
JAK MOŻESZ SIĘ POTKNĄĆ PRÓBUJĄC 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 09:49:57
FILL_PARENT
jest przestarzały w API na poziomie 8 i MATCH_PARENT
używa API wyższego poziomu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-24 06:56:30
Match_parent jest używany zamiast fill_parent i ustawia go tak daleko, jak idzie rodzic. Wystarczy użyć match_parent i zapomnieć o fill_parent. Całkowicie porzuciłem fill_parent i wszystko jest idealne jak zwykle.
Sprawdź tutaj aby uzyskać więcej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 08:53:43
Żeby nadać jej nazwę bliżej rzeczywistej akcji . "fill_parent"
nie wypełnia pozostałej przestrzeni, jak sugeruje nazwa (w tym celu używasz atrybutu weight). Zamiast tego zajmuje tyle miejsca, co jego układ macierzysty. Dlatego nowa nazwa to "match_parent"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-16 07:16:08
Oba mają podobną funkcjonalność tylko różnica polega na tym, że fill_parent jest używany do poziomu API 8, a match_parent jest używany po poziomie API 8 lub wyższym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 08:06:00
Kiedy ustawisz layout width
i height
jako match_parent
we właściwości XML
, będzie on zajmował cały obszar, który ma widok nadrzędny, tzn. będzie tak duży jak rodzic.
<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>
Rodzic zająca jest czerwony, a dziecko zielone. Dziecko zajmuje cały obszar. Ponieważ to width
i height
są match_parent
.
Uwaga: jeśli rodzic zostanie zastosowany jako padding, to ta spacja nie zostanie uwzględniona.
<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>
Więc TextView hight = 300dp (wysokość nadrzędna)- (20 (paddingTop)+10 (paddingBottom)) = (300 - 30) dp = 270 dp
Fill_parent Vs match_parent
fill_parent
poprzednia nazwa match_parent
Dla API poziomu 8 i wyższego fill_parent
przemianowany na match_parent
i fill_parent
jest teraz przestarzały.
Więc fill_parent
i match_parent
są takie same.
Dokumentacja API dla fill_parent
Widok powinien być tak duży jak jego rodzic (minus wypełnienie). Stała ta jest przestarzała począwszy od poziomu API 8 i jest zastępowana przez {@code match_parent}.
match_parent
i fill_parent
są tą samą właściwością, używaną do definiowania szerokości lub wysokości widoku na pełnym ekranie poziomo lub pionowo.
Te właściwości są używane w plikach XML Androida takich jak ten.
android:layout_width="match_parent"
android:layout_height="fill_parent"
Lub
android:layout_width="fill_parent"
android:layout_height="match_parent"
fill_parent
był używany w poprzednich wersjach, ale teraz został wycofany i zastąpiony przez match_parent
.
Mam nadzieję, że ci to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 05:52:46
Fill_parent: widok powinien być tak duży jak jego rodzic.
Teraz ta zawartość fill_parent jest przestarzała i zastąpiona przez match_parent.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 13:08:55
Dla mnie wypełnij rodzic i Dopasuj rodzica wykonuje tę samą funkcję tylko że:
Fill parent : Był używany przed API 8
Match parent To zostało użyte z API 8+ Funkcja obu Wypełnia widok nadrzędny na bok wypełnienia
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-28 04:25:01
Match_parent, co oznacza, że widok chce być tak duży jak jego rodzic (minus padding).
Wrap_content, co oznacza, że widok chce być wystarczająco duży, aby zamknąć jego zawartość (plus wypełnienie)
Dla lepszej ilustracji stworzyłem przykładowy layout, który demonstruje tę koncepcję. Aby zobaczyć efekt, dodałem obramowanie każdej zawartości textView.
W "Dopasuj rodzica" zawartość textView, możemy zobaczyć szerokość układu rozłożoną na całej jego rodzica długość.
Ale możemy zobaczyć w" Zawijanie zawartości " textView zawartości, jej szerokość układu zawinięty w jego zawartości (Zawartość zawijania) długości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 14:07:16
FILL_PARENT został przemianowany na MATCH_PARENT w API na poziomie 8 i wyższym, co oznacza, że widok chce być tak duży jak jego rodzic ( minus wypełnienie) - Google
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-13 10:53:53
Fill_parent (zmienił nazwę na MATCH_PARENT w API na poziomie 8 i wyższym), co oznacza, że widok chce być tak duży jak jego rodzic (minus wypełnienie)
Fill_parent: widok powinien być tak duży jak jego rodzic (minus wypełnienie). Ta stała jest przestarzała, począwszy od poziomu 8 API i jest zastępowana przez match_parent
Dla Android API 1.6 do 2.1 match_parent spowoduje błąd, więc użyj fill_parent w takich przypadkach. Aby wspierać kompatybilność wsteczną, lepiej jest użyć fill_parent
Obie są statycznymi stałymi końcowymi, które reprezentują wartość -1
FILL_PARENT jest przestarzały w API na poziomie 8
WIĘC MATCH_PARENT I FILL_PARENT SĄ TAKIE SAME?
Tak, MATCH_PARENT i FILL_PARENT są po prostu różnymi nazwami stałych dla tej samej wartości całkowitej (-1 jeśli jesteś ciekawy) używanymi do określenia trybu układu widoku w jego rodzicu.
DLACZEGO DODANO MATCH_PARENT?
Jako Roman Guy (Android Developer w Google) powiedział, że zmienili nazwę, ponieważ "fill_parent" było mylące dla programistów. W rzeczywistości, "fill_parent" nie wypełnia pozostałej przestrzeni (do tego używasz atrybutu weight), ale przyjmuje jako
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-03 05:36:39