Differenza tra imbottitura di una vista e margine


566

Qual è la differenza tra il margine di una vista e il riempimento?


10
L'imbottitura è all'interno del bordo, il margine è esterno. Vedi il modello W3C Box per i dettagli. Questo post sul blog è molto più leggibile, però :-)
Aaron Digulla,

2
Questo può essere utile Dichiarazione di layout
Sharique Abdullah,

3
questo è lo stesso dell'HTML, vedi qui per ulteriori stackoverflow.com/questions/2189452/…
Scott,

Vedi la mia risposta su una domanda simile stackoverflow.com/questions/21959050/…
Eugene Brusov

Risposte:


568

Per aiutarmi a ricordare il significato dell'imbottitura , penso a un grande cappotto con molte imbottiture di cotone spesso . Sono dentro il mio cappotto, ma io e il mio cappotto imbottito siamo insieme. Siamo un'unità.

Ma per ricordare il margine , penso: " Ehi, dammi un po 'di margine! " È lo spazio vuoto tra me e te. Non entrare nella mia zona di comfort, il mio margine.

Per renderlo più chiaro, ecco un'immagine di riempimento e margine in un TextView:

inserisci qui la descrizione dell'immagine

layout xml per l'immagine qui sopra

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#c5e1b0"
        android:textColor="#000000"
        android:text="TextView margin only"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#f6c0c0"
        android:textColor="#000000"
        android:text="TextView margin only"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#c5e1b0"
        android:padding="10dp"
        android:textColor="#000000"
        android:text="TextView padding only"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#f6c0c0"
        android:padding="10dp"
        android:textColor="#000000"
        android:text="TextView padding only"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#c5e1b0"
        android:textColor="#000000"
        android:padding="10dp"
        android:text="TextView padding and margin"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#f6c0c0"
        android:textColor="#000000"
        android:padding="10dp"
        android:text="TextView padding and margin"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#c5e1b0"
        android:textColor="#000000"
        android:text="TextView no padding no margin"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#f6c0c0"
        android:textColor="#000000"
        android:text="TextView no padding no margin"
        android:textSize="20sp" />

</LinearLayout>

Relazionato


578

L'imbottitura è lo spazio all'interno del bordo, tra il bordo e il contenuto della vista effettiva. Nota che l'imbottitura ruota completamente attorno al contenuto: c'è un'imbottitura sui lati superiore, inferiore, destro e sinistro (che può essere indipendente).

I margini sono gli spazi esterni al bordo, tra il bordo e gli altri elementi accanto a questa vista. Nell'immagine, il margine è l'area grigia all'esterno dell'intero oggetto. Nota che, come il riempimento, il margine ruota completamente attorno al contenuto: ci sono margini sui lati superiore, inferiore, destro e sinistro.

Un'immagine dice più di 1000 parole (estratte da Margin Vs Padding - Proprietà CSS ):

testo alternativo


54
La risposta è per HTML / CSS, la domanda riguardava Android. Il modello di visualizzazione di Android si ispira all'HTML, ma non è identico. Per prima cosa, il bordo non è un oggetto considerevole di prima classe lì.
Seva Alekseyev,

48
NOTA: in Android, la proprietà layout_width include contenuto e riempimento. (In HTML, la proprietà css width si riferisce solo alla larghezza del contenuto.) Come diceva Seva, Android non ha un concetto incorporato di bordi. Puoi usare uno sfondo png a 9 patch o un disegno vettoriale xml per aggiungere un bordo in Android.
SharkAlley,

12
Vale anche la pena notare che lo sfondo viene modificato in base al margine ma non al riempimento (in Android.)
ArtOfWarfare

In Android, ciò che qui viene chiamato "bordo", è in realtà il "contenitore di visualizzazione". Ciò dovrebbe chiarire un po 'le cose che spero.
The Hungry Androider,

75

L'imbottitura è all'interno di una vista.

Il margine è esterno a una vista.

Questa differenza può essere rilevante per le proprietà dello sfondo o delle dimensioni.


41

L'imbottitura è all'interno della vista, il margine è all'esterno. L'imbottitura è disponibile per tutte le viste. A seconda della vista, potrebbe esserci o meno una differenza visiva tra imbottitura e margine.

Per i pulsanti, ad esempio, l'immagine di sfondo del pulsante caratteristico include il riempimento, ma non il margine. In altre parole, l'aggiunta di più padding rende il pulsante visivamente più grande, mentre l'aggiunta di più margine aumenta solo lo spazio tra il pulsante e il controllo successivo.

Per TextViews, d'altra parte, l'effetto visivo di imbottitura e margine è identico.

La disponibilità del margine è determinata dal contenitore della vista, non dalla vista stessa. In LinearLayoutmargin è supportato, in AbsoluteLayout(considerato ormai obsoleto) - no.



8

Riempimento significa spazio tra widget e cornice originale del widget. Ma il margine è lo spazio tra la cornice originale del widget ai confini della cornice di altri widget. inserisci qui la descrizione dell'immagine.


7

L'imbottitura è lo spazio all'interno del bordo tra il bordo e l'immagine reale o il contenuto della cella. I margini sono gli spazi esterni al bordo, tra il bordo e gli altri elementi accanto a questo oggetto.


7

A volte puoi ottenere lo stesso risultato giocando solo con padding O margine. Esempio :

Supponiamo che la vista X contenga la vista Y (ovvero: la vista Y sia all'interno della vista X).

-Visualizza Y con margine = 30 OPPURE La vista X con riempimento = 30 otterrà lo stesso risultato: la vista Y avrà un offset di 30.


7

Imbottitura
imbottitura è all'interno di un esempio view.For se si dà android:paddingLeft=20dp, allora gli elementi all'interno della vista provvederà con 20dplarghezza da left.You può anche utilizzare paddingRight, paddingBottom, paddingTopche devono dare rispettivamente padding da destra, inferiore e superiore.

Margine Il
margine è al di fuori di a View. Ad esempio, se lo dai android:marginLeft=20dp, la vista verrà organizzata dopo 20dpda sinistra.


3

Supponiamo che tu abbia un pulsante in una vista e che la dimensione della vista sia 200 per 200, e la dimensione del pulsante sia 50 per 50 e il titolo del pulsante sia HT. Ora la differenza tra margine e riempimento è, puoi impostare il margine del pulsante nella vista, ad esempio 20 da sinistra, 20 dall'alto, e il riempimento regolerà la posizione del testo nel pulsante o nella vista del testo ecc. Per esempio , il valore di riempimento è 20 da sinistra, quindi regolerà la posizione del testo.


2

Il margine si riferisce allo spazio extra esterno a un elemento. L'imbottitura si riferisce allo spazio extra all'interno di un elemento. Il margine è lo spazio extra attorno al controllo. L'imbottitura è spazio extra all'interno del controllo.

È difficile vedere la differenza con il margine e l'imbottitura con un riempimento bianco, ma con un riempimento colorato puoi vederlo bene.


2

Oltre a tutte le risposte corrette sopra, un'altra differenza è che il riempimento aumenta l'area cliccabile di una vista, mentre i margini no . Questo è utile se hai un'immagine cliccabile di dimensioni ridotte ma vuoi far perdonare il gestore di clic.

Per esempio, vedere questa immagine del mio layout con una ImageView(l'icona di Android), dove ho impostato l' paddingBottonad essere 100dp(l'immagine è lo stock lanciatore mipmap ic_launcher). Con il gestore di clic allegato sono stato in grado di fare clic all'esterno e sotto l'immagine e comunque registrare un clic.

inserisci qui la descrizione dell'immagine


Un consiglio pratico e utile!
navylover,

2

In parole semplici:

  1. Imbottitura: crea spazio all'interno del bordo della vista.
  2. Margine: crea spazio al di fuori del bordo della vista.

1

In parole semplici: il
riempimento cambia la dimensione della scatola (con qualcosa).
il margine cambia lo spazio tra le diverse caselle

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.