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

评论

填充在边界内,边距在边界外。有关详细信息,请参见W3C Box型号。虽然,这篇博客文章更具可读性:-)

这可能对声明布局很有帮助

这与HTML相同,请参见此处以了解更多stackoverflow.com/questions/2189452/…

看到我对类似问题的回答stackoverflow.com/questions/21959050 / ...

#1 楼

为了帮助我记住填充的含义,我想到一件大外套,上面有很多厚的棉垫。我在外套里,但是我和我的棉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>


相关


重力与layout_gravity
匹配_父项vs wrap_content


#2 楼

填充是边框内部,边框和实际视图内容之间的空间。请注意,填充完全围绕内容:在顶部,底部,右侧和左侧(可以是独立的)上都有填充。此视图旁边的其他元素。在图像中,边距是整个对象外部的灰色区域。请注意,就像填充一样,边距完全围绕内容:在顶部,底部,右侧和左侧都有边距。填充-CSS属性):



评论


答案是HTML / CSS,问题是关于Android。 Android的视图模型受HTML启发,但并不完全相同。一方面,边界不是那里的一流的可调整对象。

– Seva Alekseyev
2011年6月23日14:24

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

–鲨鱼巷
2012年6月24日20:52



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

–ArtOfWarfare
2012年11月13日20:39



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

–饥饿的Androider
15年10月28日在15:00

#3 楼

填充位于视图内部。

边距位于视图外部。

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

#4 楼

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

例如,对于按钮,特征按钮背景图像包含填充,但不包含边距。换句话说,增加更多的填充使按钮在外观上看起来更大,而增加更多的空白仅使按钮和下一个控件之间的间隙变宽。边距和边距的效果是相同的。

边距是否可用取决于视图的容器,而不是视图本身。在TextView中支持边距,在LinearLayout中(现在考虑已作废)-不。

#5 楼

下图将使您了解填充和边距-



#6 楼

填充是指小部件和小部件原始框架之间的空间。但是空白是小部件的原始框架与其他小部件的框架之间的边界。

#7 楼

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

#8 楼

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

说视图X包含视图Y(又称:视图Y在视图X的内部)。达到相同的结果:视图Y的偏移量为30。

#9 楼

填充
填充在视图内部。例如,如果您输入android:paddingLeft=20dp,则视图中的项目将以从左侧开始的20dp宽度排列。您还可以使用paddingRightpaddingBottompaddingTop从右侧进行填充,底部和顶部。

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

#10 楼

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

#11 楼

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

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

#12 楼

除了上述所有正确答案之外,另一个不同之处在于,填充增加了视图的可点击区域,而边距则没有。如果您的可点击图片很小,但想让点击处理程序宽容,这将非常有用。是ImageView(图像是股票启动器mipmap paddingBotton)。使用附加的单击处理程序,我可以在图像的外部和下方进行单击,并且仍然可以进行单击。

#13 楼

简而言之:


填充-在视图边界内创建空间。
页边距-在视图边界外创建空间。


#14 楼

简而言之:
填充更改框的大小(带有某些内容)。
边距更改不同框之间的空间