视图的填充和边距之间的区别


566

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


10
填充在边界内,边距在边界外。有关详细信息,请参见W3C Box型号不过,此博客文章更具可读性:-)
亚伦·迪古拉


3
这是相同的HTML,在这里看到更多的stackoverflow.com/questions/2189452/...
斯科特

Answers:


568

为了帮助我记住填充的含义,我想起一件大外套,上面有很多厚的棉填充物。我在外套里,但是我和我的棉coat在一起。我们是一个单位。

但是要记住余量,我想到:“ 嘿,给我一些余量! ”这是我和您之间的空白。不要进入我的舒适区-我的边缘。

为了更加清楚,这是的填充和边距图片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>

有关


577

填充是边框内部,边框和实际视图内容之间的空间。请注意,填充内容完全围绕内容:顶部,底部,右侧和左侧(可以是独立的)上都有填充。

保证金为边框外侧的空间,边框和其他元素旁边的这个观点之间。在图像中,边距是整个对象外部的灰色区域。请注意,就像填充一样,页边空白完全围绕内容:在顶部,底部,右侧和左侧都有页边空白。

一张图片说了1000多个字(摘自Margin Vs Padding-CSS Properties):

替代文字


54
答案是针对HTML / CSS的,问题是关于Android的。Android的视图模型受HTML启发,但并不完全相同。一方面,边界不是那里的一流的可调整对象。
塞瓦·阿列克谢耶夫

48
注意:在Android中,layout_width属性包括内容和填充。(在HTML中,css width属性仅指内容宽度。)正如Seva所说,Android没有内置的边框概念。您可以使用9色png png背景或可绘制的xml矢量在Android中添加边框。
SharkAlley 2012年

12
还值得注意的是,背景是根据边距而不是填充进行修改的(在Android中)
。– ArtOfWarfare 2012年

在Android中,这里所谓的“边框”实际上是“视图容器”。这应该澄清一些我希望的事情。
2015年

75

填充位于视图内部。

边距在视图之外。

这种差异可能与背景或尺寸属性有关。


41

填充在视图内,边距在视图外。填充可用于所有视图。根据视图的不同,填充和边距之间可能没有视觉差异。

例如,对于按钮,特征按钮背景图像包括填充,但不包括边距。换句话说,增加更多的填充使按钮在外观上看起来更大,而增加更多的边距只会使按钮与下一个控件之间的间隙变宽。

TextView另一方面,对于s,填充和边距的视觉效果是相同的。

边距是否可用取决于视图的容器,而不是视图本身。在LinearLayout保证金方面,AbsoluteLayout(现在考虑已作废)-否。



8

填充是指小部件和小部件原始框架之间的空间。但是空白是小部件的原始框架与其他小部件的框架之间的边界。在此处输入图片说明


7

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


7

有时,您可以通过仅使用填充或边距来获得相同的结果。范例:

说视图X包含视图Y(又名:视图Y在视图X内)。

-Margin = 30的View Y或Padding = 30的View X将获得相同的结果:View Y的偏移量为30。


7

填充
填充是内部的View.For示例的,如果你给android:paddingLeft=20dp,那么该视图内的物品将与安排20dp宽度从left.You也可以使用paddingRightpaddingBottompaddingTop它们分别以得到由右,底部和顶部填充。

保证金
保证金在之外View。例如,如果您给出android:marginLeft=20dp,则视图将20dp从左开始排列。


3

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


2

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

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


2

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

例如,请使用ImageView(Android图标)查看此布局的图片,其中将设置paddingBotton100dp(图像是该股启动纹理贴图ic_launcher)。使用附加的单击处理程序,我可以在图像的外部和下方进行单击,并且仍然可以进行单击。

在此处输入图片说明


一个实用且有用的提示!
navylover


1

用简单的话说:
padding改变了盒子的大小(有一些东西)。
边距改变了不同盒子之间的空间

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.