Risposte:
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_PARENT
in 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 Autosize
proprietà di un controllo Windows Form su True.
Documentazione online
Ci sono alcuni dettagli nella documentazione del codice Android qui .
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 LinearLayout
dimostrazione.
Ogni View
(a TextView
, an ImageView
, a Button
, ecc.) Deve impostare il width
e il height
della 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_parent
o 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_content
e match_parent
, la prossima cosa da imparare è layout_weight
.
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>
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.
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.
fill_parent
:
Un componente è organizzato in modo fill_parent
che 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_parent
lo costringerà a occupare l'intero schermo.
wrap_content
Impostare una vista della dimensione di wrap_content
sarà costretto a visualizzare è espanso per mostrare tutto il contenuto. I controlli TextView e ImageView , ad esempio, sono impostati per wrap_content
visualizzare 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_content
all'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
fill_parent
stato rinominatomatch_parent
in API Level 8 e versioni successive.