Odpowiedzi:
Każdy z atrybutów można zastosować do rozmiaru poziomego lub pionowego widoku (kontrola wizualna). Służy do ustawiania rozmiaru widoku lub układu na podstawie jego zawartości lub rozmiaru jego układu nadrzędnego, zamiast jawnego określania wymiaru.
fill_parent
(przestarzałe i przemianowane MATCH_PARENT
na poziomie API 8 i wyższym)
Ustawienie układu widżetu na wartość fill_parent zmusi go do rozwinięcia, aby zajął tyle miejsca, ile jest dostępne w elemencie układu, w którym został umieszczony. Jest to w przybliżeniu odpowiednik ustawienia stylu dokowania kontrolki formularzy systemu Windows na Fill
.
Ustawienie układu najwyższego poziomu lub kontrolki na fill_parent zmusi go do zajęcia całego ekranu.
wrap_content
Ustawienie rozmiaru Widoku na wartość wrap_content zmusi go do rozwinięcia się na tyle daleko, aby zawierał zawarte w nim wartości (lub kontrolki podrzędne). W przypadku elementów sterujących - takich jak pola tekstowe (TextView) lub obrazy (ImageView) - spowoduje to zawinięcie wyświetlanego tekstu lub obrazu. W przypadku elementów układu zmieni rozmiar układu, aby pasował do elementów sterujących / układów dodanych jako jego elementy potomne.
Jest to mniej więcej równowartość ustawienia Autosize
właściwości Form Form Windows na True.
Dokumentacja online
Jest kilka szczegółów w Android dokumentacji kodu tutaj .
fill_parent
(przestarzałe) =match_parent
Ramka widoku potomnego rozwija się, aby dopasować się do granicy widoku rodzica.
wrap_content
Obramowanie widoku potomnego otacza się ściśle wokół własnej zawartości.
Oto kilka zdjęć, aby wyjaśnić wszystko. Zielone i czerwone są TextViews
. Biel jest LinearLayout
prześwitująca.
Każdy View
(a TextView
An ImageView
, A Button
, itd.) Musi ustawić width
i height
zdania. W pliku układu xml może to wyglądać tak:
android:layout_width="wrap_content"
android:layout_height="match_parent"
Oprócz ustawienia szerokości i wysokości na match_parent
lub wrap_content
, możesz również ustawić je na pewną wartość bezwzględną:
android:layout_width="100dp"
android:layout_height="200dp"
Zasadniczo nie jest to jednak tak dobre, ponieważ nie jest tak elastyczne dla urządzeń różnej wielkości. Po zrozumieniu wrap_content
i match_parent
następnej rzeczy do nauczenia jest layout_weight
.
Pionowy układ liniowy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=wrap height=wrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=wrap"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="width=match height=match"
android:background="#c5e1b0"/>
</LinearLayout>
Poziomy układ liniowy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapWrap"
android:background="#c5e1b0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="WrapMatch"
android:background="#f6c0c0"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="MatchMatch"
android:background="#c5e1b0"/>
</LinearLayout>
Wyjaśnienie w tej odpowiedzi zakłada, że nie ma marginesu ani wypełnienia . Ale nawet jeśli tak, podstawowa koncepcja jest nadal taka sama. Obramowanie / odstępy widoku są korygowane przez wartość marginesu lub wypełnienia.
fill_parent
sprawi, że szerokość lub wysokość elementu będzie tak duża, jak element macierzysty, innymi słowy, kontener.
wrap_content
sprawi, że szerokość lub wysokość będzie tak duża, jak to konieczne, aby pomieścić zawarte w niej elementy.
fill_parent
:
Komponent ma ustawiony układ, fill_parent
który będzie obowiązkowo rozwinąć, aby wypełnić elementy jednostki układu jak najwięcej w przestrzeni. Jest to zgodne z właściwością dockstyle kontrolki Windows. Najwyższy ustawiony układ lub fill_parent
element sterujący zmusi go do zajęcia całego ekranu.
wrap_content
Skonfiguruj widok wielkości wrap_content
będzie zmuszony do wyświetlenia jest rozwinięty, aby pokazać całą zawartość. Na przykład formanty TextView i ImageView są ustawione na wrap_content
wyświetlanie całego wewnętrznego tekstu i obrazu. Elementy układu zmienią rozmiar zgodnie z zawartością. Skonfiguruj widok wielkości atrybutu Autosize w wrap_content
przybliżeniu równoważny do ustawienia kontrolki Windows dla True.
Aby uzyskać szczegółowe informacje, sprawdź ten link: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parent
zmieniono jego nazwęmatch_parent
na API poziom 8 i wyższy.