Qual è la differenza tra match_parent e fill_parent?


Risposte:


1235

Sono la stessa cosa (in API Level 8+). Usa match_parent.

FILL_PARENT (rinominato MATCH_PARENT in API Level 8 e versioni successive), il che significa che la vista vuole essere grande quanto il suo genitore (meno il riempimento)

...

fill_parent: La vista dovrebbe essere grande quanto il suo genitore (meno imbottitura). Questa costante è obsoleta a partire dal livello API 8 ed è sostituita da match_parent.

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html


5
se scrivo app sia per 1.6 che per 2.2, userò fill_parent per la compatibilità, giusto?
emeraldhieu,

12
Ci devono essere alcune differenze, giusto? Altrimenti perché Google lo ha deprecato e ribattezzato quello nuovo?
stuckedoverflow

49
@Halim No, non c'è differenza : entrambi sono definiti costanti -1. Mi sento meglio a riguardo, non capisco nemmeno il miglioramento in questo ... :-)
arpy

2
@jlovison No, non ci sono differenze. Entrambi lo sono -1. Viene visualizzato l'errore perché la piattaforma precedente non è a conoscenza del nuovo nome della stessa costante.
Tapirboy,

16
È così strano che Android Studio inserisca ancora "fill_parent" in tutti i layout predefiniti creati da modelli! So che sono uguali, ma continuo a tornare a questa domanda SO ogni anno per assicurarmi che nessuno abbia scoperto che c'è davvero una differenza. Il team di Google / Android può modificare il valore predefinito da "fill_parent" a "match_parent"? Grazie in anticipo! :)
swooby

246

Google ha cambiato il nome per evitare confusione.

Il problema con il vecchio nome fill parentera che implica che influisce sulle dimensioni del genitore, mentre match parentdescrive meglio il comportamento risultante: abbina la dimensione al genitore.

Entrambe le costanti si risolvono alla -1fine e quindi comportano lo stesso comportamento nell'app. Ironia della sorte, questa modifica del nome fatta per chiarire le cose sembra aver aggiunto confusione piuttosto che eliminarla.


17
... tranne con il figlio di RelativeLayout con width = match_parent e, diciamo, lasciato da altro. Non corrisponde alla dimensione del genitore, riempie ciò che rimane in esso. Questo serve solo a CAUSARE confusione.
Kaay

7
Dato che FILL_PARENT e MATCH_PARENT indicano che la vista vuole essere grande quanto il suo genitore, meno l'imbottitura del genitore non è che lo spazio interno piuttosto che le dimensioni esterne? Ora sono ancora più confuso!
Caltor,

@bnieland Ho rimosso i riferimenti alle dimensioni interne ed esterne in quanto non concordano con la documentazione di Google su developer.android.com/reference/android/view/… anche se posso vedere una citazione simile (non comprovata ) su sevennet.org / 2014/11/22 /… da dove potresti aver ottenuto le tue informazioni.
Caltor,

28

Funzionalmente nessuna differenza, Google ha appena cambiato il nome da fill_parent a match_parent, dal livello API 8 (Android 2.2). FILL_PARENT è ancora disponibile per motivi di compatibilità.

LayoutParams.FILL_PARENTed LayoutParams.MATCH_PARENTentrambi hanno valore -1. Non sono sicuro di cosa abbia tentato Google di cambiare da Fill Parent a Match Parent :)

Dato che la maggior parte dei phones are >= Android 2.2.. dovresti usare Match Parent per la compatibilità futura ... non sei sicuro di quando interromperanno la costante Fill Fill più vecchia!


11

Per motivi di compatibilità, è meglio attenersi a fill_parent, ovvero quando si supportano dispositivi API 8 inferiori. Ma se la tua app è indirizzata all'API 8 e versioni successive, devi invece utilizzare match_parent.


8
Solo compatibilità all'indietro però. Se FILL_PARENTè deprecato (come indicato da Matt Ball sopra), l'unica opzione per la compatibilità in avanti è MATCH_PARENT.

2
Accetto, ma se hai in programma di scrivere codice per dispositivi di livello API inferiore, ad es. 2.3.2.2,2.1 per il momento, devi utilizzare FILL_PARENT. Ho avuto dei problemi con match_parent per le versioni precedenti.
MSA

è tempo di cancellare questa risposta. Non è più rilevante e può dare consigli sbagliati ai nuovi sviluppatori
Tim

8

FILL_PARENTè obsoleto nel livello API 8 e MATCH_PARENTutilizza l' API di livello superiore


8

match_parent è usato al posto di fill_parent e lo imposta in modo che vada fino al genitore. Basta usare match_parent e dimenticare fill_parent . Ho completamente abbandonato fill_parent e tutto è perfetto come al solito.

Controlla qui per ulteriori informazioni.


6

Solo per dargli un nome più vicino alla sua azione reale . "fill_parent"non riempie lo spazio rimanente come implicherebbe il nome (per questo si utilizza l'attributo weight). Invece, occupa tanto spazio quanto il suo genitore di layout. Ecco perché il nuovo nome è"match_parent"


2
Non capisco la logica delle persone quando lo affermano. Il genitore ha un'imbottitura. O il bambino è rimasto di un altro. Il bambino lo sta abbinando? No. riempie lo spazio rimanente? Qui in quello che è apparentemente il mondo Bizzarro, rispondiamo: sì.
Kaay,

1
@kay sono pienamente d'accordo sul fatto che il nuovo nome sia peggiore di quello vecchio. Ma ciò che dice Google va.
Caltor,

6

Entrambi hanno funzionalità simili, l'unica differenza è che fill_parent viene utilizzato fino al livello API 8 e match_parent viene utilizzato dopo il livello API 8 o superiore.


6

Quando imposti il ​​layout widthe height come match_parentnella XMLproprietà, occuperà l'intera area della vista principale, ovvero sarà grande quanto il padre.

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

Il genitore delle lepri è rosso e il bambino è verde. Il bambino occupa tutta l'area. Perché è widthe lo height sono match_parent.

inserisci qui la descrizione dell'immagine

Nota: se a parent viene applicato un padding, lo spazio non verrebbe incluso.

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

inserisci qui la descrizione dell'immagine

Quindi TextView hight = 300dp (parent hight) - (20 (paddingTop) +10 (paddingBottom)) = (300-30) dp = 270 dp

fill_parent Vs match_parent

fill_parent è il nome precedente di match_parent

Per API Level 8 e versioni successive fill_parentrinominate come match_parente fill_parentora sono obsolete.

Quindi fill_parente match_parentsono uguali.

Documentazione API per fill_parent

La vista dovrebbe essere grande quanto il suo genitore (meno imbottitura). Questa costante è obsoleta a partire dal livello API 8 e viene sostituita da {@code match_parent}.


4

match_parent, il che significa che la vista vuole essere grande quanto il suo genitore (meno il riempimento).

wrap_content, il che significa che la vista vuole essere abbastanza grande da racchiuderne il contenuto (più il riempimento)

Per una migliore illustrazione, ho creato un layout di esempio che dimostra questo concetto. Per vederne l'effetto, ho aggiunto un bordo di ogni contenuto textView.

Nel contenuto "Visualizza padre" di TextView, possiamo vedere la sua larghezza del layout distribuita dalla sua intera lunghezza padre.

Ma possiamo vedere nel testo "Wrap Content" visualizzare il contenuto, la sua larghezza del layout è racchiusa nella lunghezza del contenuto (Wrap Content).

Layout Android


4

match_parent e fill_parent sono la stessa proprietà, utilizzata per definire la larghezza o l'altezza di una vista a schermo intero in orizzontale o in verticale.

Queste proprietà sono utilizzate in file xml Android come questo.

 android:layout_width="match_parent"
 android:layout_height="fill_parent"

o

 android:layout_width="fill_parent"
 android:layout_height="match_parent"

fill_parentera usato nelle versioni precedenti, ma ora è stato deprecato e sostituito da match_parent. Spero che ti possa aiutare.


3

fill_parent: la vista dovrebbe essere grande quanto il suo genitore.

ora questo contenuto fill_parent è deprecato e sostituito da match_parent.


3

Per me riempire parent e match parent svolge la stessa funzione solo che:

riempimento parent : è stato utilizzato prima dell'API 8

match parent Questo è stato usato dalla funzione API 8+ di entrambi Riempie la vista parent a parte il riempimento


2

FILL_PARENT è stato rinominato MATCH_PARENT nel livello API 8 e versioni successive, il che significa che la vista vuole essere grande quanto il suo genitore (meno riempimento) - Google


2

FILL_PARENT è deprecato dal livello API 8 e versioni successive ed è stato rinominato per le versioni superiori come MATCH_PARENT

Entrambi sono stesso FILL_PARENTe MATCH_PARENT, FILL_PARENTè stato utilizzato nella versione inferiore inferiore al livello API 8 e MATCH_PATENT sono utilizzati in alto livello maggiore di 8 API.

FILL_PARENT(rinominato MATCH_PARENTin API Livello 8 e versioni successive), il che significa che la vista vuole essere grande quanto il suo genitore (meno riempimento)

fill_parent: La vista dovrebbe essere grande quanto il suo genitore (meno imbottitura). Questa costante è obsoleta a partire dal livello API 8 ed è sostituita da match_parent.

Per maggiori dettagli, visita questa pagina


0

1. match_parent

Quando imposti la larghezza e l'altezza del layout come match_parent, occuperà l'intera area della vista principale, ovvero sarà grande quanto il padre.

Nota : se al genitore viene applicata un'imbottitura, lo spazio non verrebbe incluso.

Quando creiamo un layout.xml per impostazione predefinita, abbiamo RelativeLayout come genitore predefinito Visualizza con android: layout_width = "match_parent" e android: layout_height = "match_parent", ovvero occupa l'intera larghezza e altezza dello schermo mobile.

Si noti inoltre che l'imbottitura viene applicata su tutti i lati,

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

Ora consente di aggiungere una sotto-vista LinearLayout e imposta layout_width = "match_parent" e layout_height = "match_parent", la vista grafica mostrerebbe qualcosa del genere,

match_parent_example

Codice

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >

2. fill_parent:

Questo è lo stesso di match_parent, fill_parent è stato ammortizzato nel livello API 8. Quindi, se si utilizza API livello 8 o superiore, è necessario evitare di utilizzare fill_parent

Seguiamo gli stessi passaggi che abbiamo fatto per match_parent, invece usa fill_parent ovunque.

Vedresti che non c'è differenza nel comportamento sia in fill_parent che in match parent.

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.