View's Padding和Margin的区别

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

263611 次浏览

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

例如,对于按钮,特征按钮背景图像包括填充,但不包括空白。换句话说,添加更多的填充会使按钮在视觉上看起来更大,而添加更多的边距只会使按钮和下一个控件之间的距离更宽。

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

页边距是否可用是由视图的容器决定的,而不是视图本身。在LinearLayout中支持空白,在AbsoluteLayout中(现在认为已经过时了)-不支持空白。

填充在视图内部。

边距在视图之外。

这种差异可能与背景或大小属性有关。

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

利润率是边界之外的空间,在边界和视图旁边的其他元素之间。在图像中,边缘是整个物体外部的灰色区域。请注意,与填充一样,页边距完全围绕内容:在顶部、底部、右侧和左侧都有页边距。

一幅超过1000字的图片(摘自边距与填充- CSS属性):

alt text

Padding是边框和实际图像或单元格内容之间的边框内空间。 边距是边界之外的空间,在边界和对象旁边的其他元素之间。< / p >

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

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

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

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

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

为了让它更清晰,这里是TextView的填充和边距的图片:

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>

相关的

假设你在视图中有一个按钮视图的大小是200 * 200,按钮的大小是50 * 50,按钮标题是HT。现在,边距和填充的区别是,你可以在视图中设置按钮的边距,例如从左边20,从上面20,填充将调整文本在按钮或文本视图中的位置等。例如,填充值从左边20,所以它将调整文本的位置。

下面的图片将让你了解填充和空白-

enter image description here

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

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

< p > # EYZ0
填充在视图内部。例如,如果你给android:paddingLeft=20dp,那么视图中的项目将以20dp的宽度从左开始排列。你也可以使用paddingRightpaddingBottompaddingTop分别从右,下和上填充 < p > # EYZ0
Margin在View的外面。例如,如果你指定android:marginLeft=20dp,那么视图将从左起排列在20dp之后

简单来说就是:
填充改变盒子的大小(用一些东西).
边距改变不同框之间的间距

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

除了上面所有的正确答案,另一个区别是< em >填充增加了视图的可点击区域,而利润率不。如果你有一个小的可点击图像,但想让点击处理程序宽容,这是有用的。

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

enter image description here

简单地说:

  1. 填充-在视图的边界内创建空间。
  2. 边框-创建视图边框之外的空间。

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

enter image description here

保证金用于在不同视图之间添加一个空格。

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

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

价值相等的各方:

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

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

支持具体价值观:

填充

  • 设置底部边缘的填充
  • android:paddingStart设置在视图左侧的开始边的填充
  • 设置在视图右侧的结束边的填充
  • 设置顶部边缘的填充

保证金

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