Antworten:
Jedes Attribut kann auf die horizontale oder vertikale Größe der Ansicht (visuelle Steuerung) angewendet werden. Es wird verwendet, um eine Ansichts- oder Layoutgröße basierend auf dem Inhalt oder der Größe des übergeordneten Layouts festzulegen, anstatt explizit eine Dimension anzugeben.
fill_parent
(veraltet und MATCH_PARENT
in API Level 8 und höher umbenannt)
Wenn Sie das Layout eines Widgets auf fill_parent setzen, wird es erweitert, um so viel Speicherplatz wie möglich innerhalb des Layoutelements zu belegen, in dem es platziert wurde. Dies entspricht in etwa dem Festlegen des Dockstils eines Windows Form-Steuerelements auf Fill
.
Wenn Sie ein Layout oder Steuerelement der obersten Ebene auf fill_parent setzen, wird der gesamte Bildschirm eingenommen.
wrap_content
Wenn Sie die Größe einer Ansicht auf wrap_content festlegen, wird sie nur so weit erweitert, dass sie die darin enthaltenen Werte (oder untergeordneten Steuerelemente) enthält. Bei Steuerelementen wie Textfeldern (TextView) oder Bildern (ImageView) wird der angezeigte Text oder das umgebrochene Bild umgebrochen. Bei Layoutelementen wird die Größe des Layouts an die Steuerelemente / Layouts angepasst, die als untergeordnete Elemente hinzugefügt wurden.
Dies entspricht in etwa dem Festlegen der Autosize
Eigenschaft eines Windows Form Control auf True.
Online-Dokumentation
Es gibt einige Details im Android Code - Dokumentation hier .
fill_parent
(veraltet) =match_parent
Der Rand der untergeordneten Ansicht wird erweitert und entspricht dem Rand der übergeordneten Ansicht.
wrap_content
Der Rand der untergeordneten Ansicht umschließt eng den eigenen Inhalt.
Hier sind einige Bilder, um die Dinge klarer zu machen. Das Grün und Rot sind TextViews
. Das Weiß ist ein LinearLayout
Durchscheinen.
Jeder View
(a TextView
, an ImageView
, a Button
usw.) muss das width
und das height
der Ansicht einstellen . In der XML-Layoutdatei könnte dies folgendermaßen aussehen:
android:layout_width="wrap_content"
android:layout_height="match_parent"
Neben der Einstellung von Breite und Höhe auf match_parent
oder wrap_content
können Sie auch einen absoluten Wert festlegen:
android:layout_width="100dp"
android:layout_height="200dp"
Im Allgemeinen ist dies jedoch nicht so gut, da es für Geräte unterschiedlicher Größe nicht so flexibel ist. Nachdem Sie verstanden haben , wrap_content
und match_parent
ist das nächste , was zu lernen layout_weight
.
Vertikales lineares Layout
<?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>
Horizontales lineares Layout
<?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>
Bei der Erklärung in dieser Antwort wird davon ausgegangen, dass kein Rand oder keine Polsterung vorhanden ist . Aber selbst wenn ja, ist das Grundkonzept immer noch dasselbe. Der Ansichtsrand / -abstand wird nur durch den Wert des Randes oder der Auffüllung angepasst.
fill_parent
Dadurch wird die Breite oder Höhe des Elements so groß wie das übergeordnete Element, dh der Container.
wrap_content
Dadurch wird die Breite oder Höhe so groß wie erforderlich, um die darin enthaltenen Elemente aufzunehmen.
fill_parent
::
Ein Komponentenlayout ist so angeordnet fill_parent
, dass es erweitert werden muss, um die Elemente der Layouteinheit so weit wie möglich im Raum zu füllen. Dies stimmt mit der Dockstyle-Eigenschaft des Windows-Steuerelements überein. Ein Top-Set-Layout oder Steuerelement fill_parent
erzwingt, dass es den gesamten Bildschirm einnimmt.
wrap_content
Das Einrichten einer Ansicht mit der Größe von wrap_content
wird zur Anzeige gezwungen und erweitert, um den gesamten Inhalt anzuzeigen. Mit den TextView- und ImageView- Steuerelementen wird beispielsweise wrap_content
der gesamte interne Text und das gesamte Bild angezeigt. Layoutelemente ändern die Größe je nach Inhalt. Richten Sie eine Ansicht der Größe des Autosize-Attributs ein, die in wrap_content
etwa dem Festlegen eines Windows-Steuerelements für True entspricht.
Weitere Informationen finden Sie unter folgendem Link: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parent
Umbenennungmatch_parent
in API Ebene 8 und höher.