it-swarm.com.de

Was ist der Unterschied zwischen fill_parent und wrap_content?

Was ist der Unterschied zwischen fill_parent (match_parent In API Level 8 und höher) und wrap_content In Android, wenn Widgets erstellt werden?

Gibt es eine Dokumentation, auf die Sie verweisen können? Ich bin daran interessiert, es sehr gut zu verstehen.

268
pupeno

Jedes Attribut kann auf die horizontale oder vertikale Größe von View (visuelle Kontrolle) 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 umbenannt MATCH_PARENT in API Level 8 und höher)

Wenn Sie das Layout eines Widgets auf "fill_parent" setzen, wird die Erweiterung des Widgets erzwungen, um so viel Platz zu beanspruchen, wie im platzierten Layoutelement verfügbar ist. 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 angezeigt.

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 angezeigte Bild umbrochen. 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 Controls auf True.

Online-Dokumentation

Es gibt einige Details in der Android Codedokumentation hier .

258
Reto Meier

fill_parent (veraltet) = match_parent
Der Rand der untergeordneten Ansicht wird erweitert, um mit dem Rand der übergeordneten Ansicht übereinzustimmen.

wrap_content
Der Rand der untergeordneten Ansicht schließt sich eng an den eigenen Inhalt an.

Hier sind einige Bilder, um die Dinge klarer zu machen. Das Grün und Rot sind TextViews. Das Weiß ist ein durchscheinendes LinearLayout.

enter image description here

Jedes View (ein TextView, ein ImageView, ein Button usw.) muss das width und das height der Ansicht. In der XML-Layoutdatei könnte das so 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 wrap_content Und match_parent Verstanden haben, müssen Sie als Nächstes layout_weight Lernen.

Siehe auch

XML für die obigen Bilder

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>

Hinweis

Die Erklärung in dieser Antwort geht davon aus, dass es kein Rand oder Abstand gibt. Aber selbst wenn ja, ist das Grundkonzept immer noch dasselbe. Der Ansichtsrand/-abstand wird nur durch den Wert des Rands oder des Abstands angepasst.

33
Suragch
  • Mit fill_parent Wird die Breite oder Höhe des Elements so groß wie das übergeordnete Element, dh der Container.

  • wrap_content Lässt die Breite oder Höhe so groß werden, dass die Elemente darin enthalten sind.

Klicken Sie hier für Android DOC Referenz

9
Devrath

fill_parent:

Eine Komponente ist so angeordnet, dass das Layout für fill_parent Zwingend erweitert werden muss, um die Mitglieder der Layouteinheit so weit wie möglich im Raum auszufüllen. Dies stimmt mit der Eigenschaft dockstyle des Windows-Steuerelements überein. Wenn Sie das Layout oder Steuerelement oben auf fill_parent Setzen, nimmt es den gesamten Bildschirm ein.

wrap_content

Richten Sie eine Ansicht mit der Größe von wrap_content Ein. Die Ansicht wird erweitert, um den gesamten Inhalt anzuzeigen. Die Steuerelemente TextView und ImageView , die beispielsweise auf wrap_content Eingestellt sind, zeigen den gesamten internen Text und das gesamte interne Bild an. Layoutelemente ändern die Größe je nach Inhalt. Richten Sie eine Ansicht der Größe des Autosize-Attributs wrap_content Ein, die in 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

2
IntelliJ Amiya