Diferencia entre el relleno y el margen de una vista

566

¿Cuál es la diferencia entre el margen de una vista y el relleno?

Ragunath Jawahar
fuente
10
El relleno está dentro del borde, el margen está afuera. Vea el modelo W3C Box para más detalles. Sin embargo, esta publicación de blog es mucho más legible :-)
Aaron Digulla
2
Esto puede ser útil Declaración de diseño
Sharique Abdullah
3
esto es lo mismo que HTML, vea aquí para más stackoverflow.com/questions/2189452/…
Scott
Vea mi respuesta en una pregunta similar stackoverflow.com/questions/21959050/…
Eugene Brusov

Respuestas:

568

Para ayudarme a recordar el significado del relleno , pienso en un abrigo grande con mucho relleno de algodón grueso . Estoy dentro de mi abrigo, pero mi abrigo acolchado y yo estamos juntos. Somos una unidad

Pero para recordar el margen , pienso en " ¡Oye, dame un margen! " Es el espacio vacío entre tú y yo. No entres en mi zona de confort, mi margen.

Para hacerlo más claro, aquí hay una imagen de relleno y margen en TextView:

ingrese la descripción de la imagen aquí

diseño xml para la imagen de arriba

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

Relacionado

Suragch
fuente
578

Relleno es el espacio dentro del borde, entre el borde y el contenido de la vista real. Tenga en cuenta que el relleno va completamente alrededor del contenido: hay relleno en los lados superior, inferior, derecho e izquierdo (que puede ser independiente).

Los márgenes son los espacios fuera del borde, entre el borde y los otros elementos al lado de esta vista. En la imagen, el margen es el área gris fuera del objeto completo. Tenga en cuenta que, como el relleno, el margen va completamente alrededor del contenido: hay márgenes en los lados superior, inferior, derecho e izquierdo.

Una imagen dice más de 1000 palabras (extraídas de Margin Vs Padding - Propiedades de CSS ):

texto alternativo

Cristian
fuente
54
La respuesta es para HTML / CSS, la pregunta era sobre Android. El modelo de vista de Android está inspirado en HTML, pero no es idéntico. Por un lado, el borde no es un objeto considerable de primera clase allí.
Seva Alekseyev
48
NOTA: en Android, la propiedad layout_width incluye contenido y relleno. (En HTML, la propiedad css width se refiere solo al ancho del contenido). Como dijo Seva, Android no tiene un concepto integrado de bordes. Puede usar un fondo png de 9 parches o un vector xml dibujable para agregar un borde en Android.
SharkAlley
12
También vale la pena señalar que el fondo se modifica en función del margen, pero no del relleno (en Android.)
ArtOfWarfare
En Android, lo que aquí se conoce como el "borde", es en realidad el "contenedor de vista". Esto debería aclarar un poco las cosas, espero.
The Hungry Androider
75

El relleno está dentro de una vista.

El margen está fuera de una vista.

Esta diferencia puede ser relevante para las propiedades de fondo o tamaño.

Floern
fuente
41

El relleno está dentro de la vista, el margen está afuera. El relleno está disponible para todas las vistas. Dependiendo de la vista, puede haber o no una diferencia visual entre el relleno y el margen.

Para los botones, por ejemplo, la imagen de fondo característica del botón incluye el relleno, pero no el margen. En otras palabras, agregar más relleno hace que el botón se vea visualmente más grande, mientras que agregar más margen solo hace que el espacio entre el botón y el siguiente control sea más amplio.

Para TextViews, por otro lado, el efecto visual del relleno y el margen es idéntico.

La disponibilidad de margen está determinada por el contenedor de la vista, no por la vista misma. En LinearLayoutmargen es compatible, en AbsoluteLayout(considerado obsoleto ahora) - no.

Seva Alekseyev
fuente
25

La imagen de abajo le permitirá comprender el relleno y el margen.

ingrese la descripción de la imagen aquí

Akshay Paliwal
fuente
8

El relleno significa espacio entre el widget y el marco original del widget. Pero el margen es el espacio entre el marco original del widget y los límites del marco de otro widget. ingrese la descripción de la imagen aquí.

akn
fuente
7

El relleno es el espacio dentro del borde entre el borde y la imagen real o el contenido de la celda. Los márgenes son los espacios fuera del borde, entre el borde y los otros elementos al lado de este objeto.

raja
fuente
7

A veces puede lograr el mismo resultado jugando solo con relleno O margen. Ejemplo:

Say View X contiene view Y (también conocido como: View Y está dentro de View X).

-Ver Y con margen = 30 O Ver X con relleno = 30 logrará el mismo resultado: Ver Y tendrá un desplazamiento de 30.

Akli
fuente
7

Relleno
El relleno está en el interior de un ejemplo view.For si se le da android:paddingLeft=20dp, a continuación, los elementos dentro de la vista arreglarán con 20dpla anchura de left.You también se puede utilizar paddingRight, paddingBottom,paddingTop que son para dar el acolchado de derecha, parte inferior y superior respectivamente.

Margen
Margen está fuera de a View. Por ejemplo, si das android:marginLeft=20dp, entonces la vista se organizará después 20dpdesde la izquierda.

jinosh
fuente
3

Supongamos que tiene un botón en una vista y el tamaño de la vista es 200 por 200, y el tamaño del botón es 50 por 50, y el título del botón es HT. Ahora, la diferencia entre el margen y el relleno es que puede establecer el margen del botón en la vista, por ejemplo 20 desde la izquierda, 20 desde la parte superior, y el relleno ajustará la posición del texto en el botón o la vista de texto, etc. , el valor de relleno es 20 desde la izquierda, por lo que ajustará la posición del texto.

Steve
fuente
2

El margen se refiere al espacio extra fuera de un elemento. El relleno se refiere al espacio extra dentro de un elemento. El margen es el espacio extra alrededor del control. El acolchado es espacio extra dentro del control.

Es difícil ver la diferencia con el margen y el relleno con un relleno blanco, pero con un relleno de color puedes verlo bien.

Pawan Kumar Singh
fuente
2

Además de todas las respuestas correctas anteriores, otra diferencia es que el relleno aumenta el área en la que se puede hacer clic en una vista, mientras que los márgenes no . Esto es útil si tiene una imagen en la que se puede hacer clic, pero desea que el controlador de clics sea indulgente.

Por ejemplo, vea esta imagen de mi diseño con un ImageView(el icono de Android) donde configuré el paddingBottonser 100dp(la imagen es el mipmap del iniciador de acciones ic_launcher). Con el controlador de clics adjunto pude hacer clic fuera y debajo de la imagen y aún así registrar un clic.

ingrese la descripción de la imagen aquí

scorpiodawg
fuente
¡Un consejo práctico y útil!
navylover
2

En palabras simples:

  1. Relleno: crea espacio dentro del borde de la vista.
  2. Margen: crea espacio fuera del borde de la vista.
Mohammed Nathar
fuente
1

En palabras simples: el
relleno cambia el tamaño del cuadro (con algo).
margen cambia el espacio entre diferentes cuadros


fuente