视图的Padding和Margin之间的区别

585

视图的margin和padding有什么区别?


10
填充(Padding)在边框内部,外边距(Margin)在边框外部。有关详细信息,请参阅W3C盒模型。虽然这篇博客文章更易读 :-) 。 - Aaron Digulla
2
这可能会有帮助 声明布局 - Sharique Abdullah
4
这与HTML相同,更多内容请参见此处:https://dev59.com/d3I95IYBdhLWcg3wtwRe#5888753 - Scott
请查看我的答案,链接如下: https://dev59.com/mGEh5IYBdhLWcg3w1mfs#46649472 - Eugene Brusov
15个回答

598

为了帮助我记住 padding 的含义,我想到了一件有许多 厚棉垫 的大衣。我和我的被填充的外套在一起,我们是一个整体。

但是要记住margin,我想到了“嘿,给我留点余地!”这是我和你之间的空白空间。不要进入我的舒适区——我的边距。

为了更清楚地说明,在下面的 TextView 中显示了 paddingmargin 的图示:

enter image description here

上述图片所用的 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>

相关


583

内边距(Padding)是指位于边框与视图实际内容之间的空间。请注意,内边距完全包围内容:上、下、左、右都有内边距(可以独立设置)。

外边距(Margin)是指位于边框以及相邻元素之间的空间。在图片中,外边距是整个对象外部的灰色区域。请注意,与内边距一样,外边距也完全包围内容:上、下、左、右都有外边距。

一张图片胜过千言万语(来自Margin Vs Padding - CSS Properties):

alt text


55
答案适用于HTML/CSS,问题涉及Android。Android的视图模型受到HTML的启发,但并非完全相同。有一点不同,边框不是一个一流可调整大小的对象。 - Seva Alekseyev
48
注意:在Android中,layout_width属性包括内容和填充(padding)。 (在HTML中,css width属性仅指内容宽度。)如Seva所说,Android没有内置的边框概念。您可以使用9-patch png背景或xml矢量图来在Android中添加边框。 - SharkAlley
12
值得注意的是,在Android中,背景会根据边缘进行修改,而不是内边距。 - ArtOfWarfare
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - The Hungry Androider
一般来说,我同意关于“一张图片胜过千言万语”的说法,但在这里,图例破坏了清晰度。相反,Margin一词可以放在蓝色区域内,而Padding一词可以放在黄色区域内。然后这句话就适用了。目前为止,对我来说,与被接受的答案中的外套进行文本类比更加清晰,比这里的图像少得多,甚至是错误的。事实上,文本内容周围的白色部分是Padding的一部分。 - Roland

76

内边距(Padding)指的是视图(View)内部的空白区域。

外边距(Margin)指的是视图(View)外部的空白区域。

这种区别可能会影响背景或大小属性。


41

内边距(Padding)是指在视图内部的间隔,而外边距(Margin)则是指视图外面的间隔。所有的视图都支持内边距,但根据不同的视图,内边距和外边距之间可能有或没有视觉上的区别。

例如,在按钮中,特征按钮背景图包括了内边距,但不包括外边距。换句话说,增加内边距会使按钮看起来更大,而增加外边距仅会扩大按钮和下一个控件之间的间距。

然而,在TextView中,内边距和外边距的视觉效果是相同的。

外边距是否可用取决于视图的容器,而不是视图本身。在LinearLayout中支持外边距,在已经被认为过时的AbsoluteLayout中不支持外边距。


24
以下图片可以帮助您理解padding和margin -

这里输入图片描述


9

Padding指的是小部件和原始框架之间的空间。而margin则是小部件原始框架与其他小部件框架边界之间的空间。enter image description here.


8

内边距
内边距是在一个视图内部的,例如如果你设置了android:paddingLeft=20dp,那么视图内部的项目就会从左侧开始以20dp的宽度排列。你也可以使用paddingRightpaddingBottompaddingTop来分别从右侧、底部和顶部设置内边距。

外边距
外边距是在视图外部的,例如如果你设置了android:marginLeft=20dp,那么视图就会从左侧向后排列20dp


7
有时,您可以通过仅使用填充(padding)或边距(margin)来实现相同的效果。例如:
假设视图X包含视图Y(即:视图Y在视图X内部)。
- 如果View Y具有Margin=30,则View X具有Padding=30将实现相同的结果:View Y将具有30的偏移量。

7

内边距是指边框与实际图像或单元格内容之间的空间。 外边距是指边框与该对象旁边的其他元素之间的空间。


3
假设你有一个视图上的按钮,视图的大小为200 x 200,按钮的大小为50 x 50,按钮标题为HT。现在margin和padding之间的区别是,您可以设置按钮在视图中的margin,例如从左侧20,从顶部20,而padding会调整按钮或文本视图中文本的位置等。例如,padding值为从左侧20开始,这将调整文本的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接