Différence entre le remplissage et la marge d'une vue

566

Quelle est la différence entre la marge d'une vue et le remplissage?

Ragunath Jawahar
la source
10
Le rembourrage est à l'intérieur de la bordure, la marge est à l'extérieur. Voir le modèle W3C Box pour plus de détails. Ce billet de blog est cependant beaucoup plus lisible :-)
Aaron Digulla
2
Cela peut être utile Déclarer la mise en page
Sharique Abdullah
3
c'est le même que HTML, voir ici pour plus de stackoverflow.com/questions/2189452/…
Scott
Voir ma réponse sur une question similaire stackoverflow.com/questions/21959050/…
Eugene Brusov

Réponses:

568

Pour m'aider à me souvenir de la signification du rembourrage , je pense à un gros manteau avec beaucoup de rembourrage en coton épais . Je suis à l'intérieur de mon manteau, mais moi et mon manteau rembourré sommes ensemble. Nous sommes une unité.

Mais pour me souvenir de la marge , je pense à " Hé, donnez-moi une marge! " C'est l'espace vide entre moi et vous. N'entrez pas dans ma zone de confort - ma marge.

Pour le rendre plus clair, voici une image de remplissage et de marge dans un TextView:

entrez la description de l'image ici

disposition xml pour l'image ci-dessus

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

en relation

Suragch
la source
578

Le remplissage est l'espace à l'intérieur de la bordure, entre la bordure et le contenu réel de la vue. Notez que le rembourrage entoure complètement le contenu: il y a un rembourrage en haut, en bas, à droite et à gauche (qui peut être indépendant).

Les marges sont les espaces à l'extérieur de la bordure, entre la bordure et les autres éléments à côté de cette vue. Dans l'image, la marge est la zone grise à l'extérieur de l'objet entier. Notez que, comme le remplissage, la marge entoure complètement le contenu: il y a des marges en haut, en bas, à droite et à gauche.

Une image contient plus de 1000 mots (extraits de Margin Vs Padding - Propriétés CSS ):

texte alternatif

Cristian
la source
54
La réponse est pour HTML / CSS, la question concernait Android. Le modèle de vue d'Android est inspiré du HTML, mais pas identique. D'une part, la bordure n'y est pas un objet de grande taille.
Seva Alekseyev
48
REMARQUE: dans Android, la propriété layout_width inclut le contenu et le remplissage. (En HTML, la propriété css width fait uniquement référence à la largeur du contenu.) Comme l'a dit Seva, Android n'a pas de concept intégré de bordures. Vous pouvez utiliser un arrière-plan png à 9 patchs ou un vecteur xml dessinable pour ajouter une bordure dans Android.
SharkAlley
12
Il convient également de noter que l'arrière-plan est modifié en fonction de la marge mais pas du rembourrage (dans Android.)
ArtOfWarfare
Dans Android, ce que l'on appelle ici la "bordure", est en fait le "conteneur d'affichage". Cela devrait clarifier un peu les choses, j'espère.
The Hungry Androider du
75

Le remplissage est à l'intérieur d'une vue.

La marge est en dehors d'une vue.

Cette différence peut être pertinente pour les propriétés d'arrière-plan ou de taille.

Floern
la source
41

Le rembourrage est dans la vue, la marge est à l'extérieur. Le rembourrage est disponible pour toutes les vues. Selon la vue, il peut y avoir ou non une différence visuelle entre le rembourrage et la marge.

Pour les boutons, par exemple, l'image d'arrière-plan du bouton caractéristique inclut le remplissage, mais pas la marge. En d'autres termes, l'ajout de plus de rembourrage rend le bouton visuellement plus grand, tandis que l'ajout de marge élargit simplement l'écart entre le bouton et le contrôle suivant.

Pour TextViews, en revanche, l'effet visuel du rembourrage et de la marge est identique.

La disponibilité ou non de la marge est déterminée par le conteneur de la vue et non par la vue elle-même. En LinearLayoutmarge est pris en charge, en AbsoluteLayout(considéré comme obsolète maintenant) - non.

Seva Alekseyev
la source
25

L'image ci-dessous vous permettra de comprendre le rembourrage et la marge-

entrez la description de l'image ici

Akshay Paliwal
la source
8

Le remplissage signifie l'espace entre le widget et le cadre d'origine du widget. Mais la marge est l'espace entre le cadre d'origine du widget pour délimiter le cadre d'un autre widget. entrez la description de l'image ici.

akn
la source
7

Le remplissage est l'espace à l'intérieur de la bordure entre la bordure et le contenu réel de l'image ou de la cellule. Les marges sont les espaces à l'extérieur de la bordure, entre la bordure et les autres éléments à côté de cet objet.

raja
la source
7

Parfois, vous pouvez obtenir le même résultat en jouant uniquement avec un remplissage OU une marge. Exemple :

Supposons que la vue X contient la vue Y (alias: la vue Y se trouve dans la vue X).

-Voir Y avec Marge = 30 OU Voir X avec Rembourrage = 30 donnera le même résultat: La vue Y aura un décalage de 30.

Akli
la source
7

Rembourrage
Rembourrage est à l' intérieur d'un exemple View.For si vous donnez android:paddingLeft=20dp, alors les éléments à l' intérieur de la vue s'arrangera avec une 20dplargeur de left.You peut également utiliser paddingRight, paddingBottom, paddingTopqui doivent donner un rembourrage de droite, en bas et en haut , respectivement.

Marge
Margin est en dehors de a View. Par exemple, si vous donnez android:marginLeft=20dp, la vue sera organisée après 20dpde gauche.

jinosh
la source
3

Supposons simplement que vous ayez un bouton dans une vue et que la taille de la vue soit 200 par 200, que la taille du bouton soit 50 par 50 et que le titre du bouton soit HT. Maintenant, la différence entre la marge et le remplissage est, vous pouvez définir la marge du bouton dans la vue, par exemple 20 à partir de la gauche, 20 à partir du haut, et le remplissage ajustera la position du texte dans le bouton ou la vue texte, etc. par exemple , la valeur de remplissage est de 20 à partir de la gauche, donc elle ajustera la position du texte.

Steve
la source
2

La marge fait référence à l'espace supplémentaire à l'extérieur d'un élément. Le remplissage fait référence à l'espace supplémentaire dans un élément. La marge est l'espace supplémentaire autour du contrôle. Le rembourrage est un espace supplémentaire à l'intérieur du contrôle.

Il est difficile de voir la différence avec la marge et le rembourrage avec un remplissage blanc, mais avec un remplissage coloré, vous pouvez le voir très bien.

Pawan Kumar Singh
la source
2

En plus de toutes les bonnes réponses ci - dessus, une autre différence est que remplissage augmente la zone cliquable d'un point de vue, alors que les marges ne le font pas . Ceci est utile si vous avez une petite image cliquable mais que vous voulez que le gestionnaire de clics pardonne.

Pour exemple, voir cette image de ma mise en page avec un ImageView(l'icône Android) où je mets le paddingBottonpour être 100dp(l'image est le lanceur stock mipmap ic_launcher). Avec le gestionnaire de clic ci-joint, j'ai pu cliquer bien en dehors et en dessous de l'image et toujours enregistrer un clic.

entrez la description de l'image ici

scorpiodawg
la source
Un conseil pratique et utile!
navylover
2

En termes simples:

  1. Rembourrage - crée un espace à l'intérieur de la bordure de la vue.
  2. Marge - crée un espace en dehors de la bordure de la vue.
mohammed nathar
la source
1

En termes simples: le
rembourrage change la taille de la boîte (avec quelque chose).
margin change l'espace entre les différentes cases


la source