视图的边距和填充之间的区别是什么?


当前回答

为了帮助我记住填充物的含义,我想到了一件有很多厚棉质填充物的大外套。我在我的外套里,但是我和我的棉袄在一起。我们是一个整体。

但为了记住空白,我会想,“嘿,给我一些空白!”那是我和你之间的空白。不要进入我的舒适区——我的底线。

为了让它更清楚,这里是一个图片的填充和空白在TextView:

上图的XML布局

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

相关的

重力vs布局重力 Match_parent vs wrap_content

其他回答

有时你可以通过使用填充或边距来达到同样的效果。例子:

假设视图X包含视图Y(也就是:视图Y在视图X内部)。

-View Y的Margin=30或View X的Padding=30将达到相同的结果:View Y的offset为30。

边距是指元素之外的额外空间。填充指的是元素内的额外空间。边距是控件周围的额外空间。填充是控件内部的额外空间。

使用白色填充时,很难看到空白和填充的区别,但使用彩色填充时,可以很好地看到它。

除了上述所有正确答案之外,另一个区别是填充增加了视图的可点击区域,而边距则不会。如果你有一个小的可点击图像,但想让点击处理程序宽容,这是有用的。

例如,看到我的ImageView布局的这张图片(Android图标),我将paddingbutton设置为100dp(图像是股票启动器mipmap ic_launcher)。有了附加的点击处理程序,我能够点击外面和下面的图像,仍然注册一个点击。

填充是边框与实际图像或单元格内容之间的边框内的空间。 边距是边界之外的空间,在边界和对象旁边的其他元素之间。

填充用于在视图及其内容之间添加空白。

边距用于在不同视图之间添加空格。

对于边距和边距,我们有两种方法来设置,

两边都设为相等的值 根据需要设置边的具体值

价值相等的各方:

你可以使用android:padding="15dp"来设置15dp所有边的填充

android:layout_margin="15dp"用于设置15dp所有边距

支持具体价值观:

填充

android:paddingBottom设置底部边缘的填充 android:paddingStart设置填充在开始边缘意味着在视图的左侧 android:paddingEnd设置填充在结束边缘意味着在右侧的视图 android:paddingTop设置顶部边距

保证金

layout_marginBottom在这个视图的底部指定额外的空间。 android:layout_marginEnd在结束端指定额外的空间,意味着在这个视图的右边。 android:layout_marginStart在开始侧指定额外的空间,意味着在这个视图的左边。 android:layout_marginTop在这个视图的顶部指定额外的空间。