Qual è la differenza tra fill_parent e wrap_content?


276

In Android, quando impagini i widget, qual è la differenza tra fill_parent( match_parentnel livello API 8 e superiore) e wrap_content?

C'è qualche documentazione a cui puoi fare riferimento? Sono interessato a capirlo molto bene.


33
Si noti che è fill_parentstato rinominato match_parentin API Level 8 e versioni successive.
Gfrigon,

Risposte:


266

Entrambi gli attributi possono essere applicati alla dimensione orizzontale o verticale di View (controllo visivo). Viene utilizzato per impostare una dimensione Vista o Layout in base al contenuto o alla dimensione del layout padre anziché specificare esplicitamente una dimensione.

fill_parent(obsoleto e rinominato MATCH_PARENTin API Level 8 e versioni successive)

L'impostazione del layout di un widget su fill_parent lo costringerà ad espandersi per occupare lo spazio disponibile nell'elemento di layout in cui è stato inserito. È approssimativamente equivalente a impostare lo stile dock di un controllo Windows Form su Fill.

L'impostazione di un layout o controllo di livello superiore su fill_parent lo costringerà a occupare l'intero schermo.

wrap_content

L'impostazione della dimensione di una vista su wrap_content la forzerà ad espandersi solo abbastanza da contenere i valori (o i controlli figlio) che contiene. Per i controlli - come caselle di testo (TextView) o immagini (ImageView) - questo avvolgerà il testo o l'immagine mostrati. Per gli elementi di layout ridimensionerà il layout per adattarlo ai controlli / layout aggiunti come relativi elementi secondari.

È all'incirca l'equivalente dell'impostazione della Autosizeproprietà di un controllo Windows Form su True.

Documentazione online

Ci sono alcuni dettagli nella documentazione del codice Android qui .


12
cosa succede se la larghezza dell'immagine è maggiore della larghezza dello schermo e imposto la larghezza dell'immagine visualizzata come fill_parent. l'immagine verrà compressa in base alle dimensioni dello schermo?
John Watson,

@JohnWatson hai trovato la tua risposta? Sono anche curioso.
Rachael,

È utile conoscere le proprietà equivalenti di Windows Form Control menzionate.
Rempelos,

Cosa hai visto @JohnWatson? Qual è la tua storia? Qual è la risposta ?
Speriamo utile,

36

fill_parent(obsoleto) =match_parent
Il bordo della vista figlio si espande per corrispondere al bordo della vista padre.

wrap_content
Il bordo della vista figlio si avvolge comodamente attorno al proprio contenuto.

Ecco alcune immagini per rendere le cose più chiare. Il verde e il rosso lo sono TextViews. Il bianco è una LinearLayoutdimostrazione.

inserisci qui la descrizione dell'immagine

Ogni View(a TextView, an ImageView, a Button, ecc.) Deve impostare il widthe il heightdella vista. Nel file di layout XML, potrebbe essere simile al seguente:

android:layout_width="wrap_content"
android:layout_height="match_parent"

Oltre a impostare la larghezza e l'altezza su match_parento wrap_content, potresti anche impostarli su un valore assoluto:

android:layout_width="100dp"
android:layout_height="200dp"

In generale, tuttavia, non è così buono, perché non è flessibile per dispositivi di dimensioni diverse. Dopo aver capito wrap_contente match_parent, la prossima cosa da imparare è layout_weight.

Guarda anche

XML per le immagini sopra

Disposizione lineare verticale

<?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>

Disposizione lineare orizzontale

<?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>

Nota

La spiegazione in questa risposta presuppone che non vi sia margine o riempimento . Ma anche se esiste, il concetto di base è sempre lo stesso. Il bordo / la spaziatura della vista sono appena regolati dal valore del margine o del riempimento.


9
  • fill_parent renderà la larghezza o l'altezza dell'elemento grande quanto l'elemento genitore, in altre parole, il contenitore.

  • wrap_content renderà la larghezza o l'altezza grandi quanto basta per contenere gli elementi al suo interno.

Fare clic qui per riferimento DOC ANDROID


quale sarà il contenitore? come circondare le viste con contenitori diversi?
Tejzeratul,

2

fill_parent :

Un componente è organizzato in modo fill_parentche sarà obbligatoria l'espansione per riempire i membri dell'unità di layout, per quanto possibile nello spazio. Ciò è coerente con la proprietà dockstyle del controllo di Windows. Un layout o controllo impostato in alto fill_parentlo costringerà a occupare l'intero schermo.

wrap_content

Impostare una vista della dimensione di wrap_contentsarà costretto a visualizzare è espanso per mostrare tutto il contenuto. I controlli TextView e ImageView , ad esempio, sono impostati per wrap_contentvisualizzare l'intero testo e l'immagine interni. Gli elementi del layout cambieranno le dimensioni in base al contenuto. Impostare una vista della dimensione dell'attributo Ridimensionamento wrap_contentall'incirca equivalente a impostare un controllo di Windows per True.

Per i dettagli, consulta questo link: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.