Android初学者填充和边距之间的区别[重复]

Posted

技术标签:

【中文标题】Android初学者填充和边距之间的区别[重复]【英文标题】:Android beginner difference between padding and margin [duplicate] 【发布时间】:2014-03-24 10:06:03 【问题描述】:

我已经提到了关于 SO 的问题。还检查了一个答案: 填充是边框内的空间,在边框和实际视图的内容之间。请注意,填充完全围绕内容:顶部、底部、右侧和左侧都有填充(可以是独立的)。

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

另外,关于内边距和边距的更多信息来自:

http://developer.android.com/reference/android/view/View.htmlhttp://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html

但是 padding 和 margin 之间的根本区别是什么?行为是否会因操作系统而异?和设备? 我有一个正常的,简单的布局。代码没有问题,使用了布局文件夹 - layout 和 layout-sw600dp 以及 drawables-4dpi。不能无margin和padding的布局,哪个更合适?

【问题讨论】:

Padding 是 inner 间距,而 margin 是 outer 间距。就这样。我想您指的是较新的操作系统主题引入的额外填充?您可以分配不同的主题和/或使用负填充来解决此问题。 扩展@ArtooDetoo的评论看到这个答案,它会消除你所有的疑虑***.com/a/4619943/1979347 【参考方案1】:

保证金

边距构成元素之间的垂直和水平区域。如果元素周围没有边距,它们将相互碰撞。换句话说,元素外部或元素之间的空间构成了边缘区域。

填充

元素的填充是围绕目标元素的内容区域设置的水平和垂直空间。所以填充是在盒子的里面,而不是外面。

【讨论】:

+1 为图片解决方案。 @Kashif 感谢您的图片解决方案,我也检查了***.com/questions/4619899/…【参考方案2】:

Padding 用于内部/内部组件。例如。 TextViewButtonEditText等 例如。文本和边框之间的空间

Margin 应用于组件的外部。 例如。屏幕左边缘和组件边框之间的空间

视觉表现很棒:Difference between a View's Padding and Margin

使用Padding,我看到了 2.2、2.3 和 4.3、4.4 的区别 在这种情况下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:text="ASDFGHJKL" />

    <TextView
        android:layout_
        android:layout_
        android:paddingLeft="15dp"
        android:text="@string/hello_world" />

</RelativeLayout>  

另外,查看dimens的使用情况:http://developer.android.com/guide/topics/resources/more-resources.html

【讨论】:

谢谢,是的,我会使用 dimen ,没有遇到过。并看到在 os 2.3 和 4.3 、 4.0 的相对布局示例中差异很大!看过你提到的链接【参考方案3】:

边距:边框与其父布局之间

填充:在内容和边框之间

refer to this

【讨论】:

谢谢,是的,我在***.com/questions/4619899/…看到了【参考方案4】:

内边距和边距之间有什么根本区别?

对于差异 - Rohan Khandwal 分享了一个非常完美的链接。

行为是否会因操作系统而异?和设备?

现在,如果我们谈论的是视图的行为,它被赋予了不同的边距和填充。那么它肯定会在不同分辨率的不同设备中看起来不同。 这就是为什么我们有不同的维度/值/布局文件夹,它们有自己的含义。

【讨论】:

谢谢,是的,这就是我想知道的。我检查了@user2450263 回答中的示例,填充差异在 2.3 和 4.3 和 4.0 中很大! 是的,这也是有用的链接。【参考方案5】:

简单来说..如果您想将 TextView、EditText 等小部件远离其他小部件。您应该使用上、右、左、下的边距。

通过增加填充,它会增加内部间距,而不会使小部件与其他小部件相距甚远..

例如,像按钮一样,按钮背景图像的特征包括内边距,但不包括边距。换句话说,添加更多的 padding 会使按钮在视觉上看起来更大,而添加更多的 margin 只会使按钮和下一个控件之间的差距更大。

【讨论】:

【参考方案6】:

android margin 和 padding 之间的区别在于,即使文本是您想要远离边缘的多少 sp,margin 也没有间隔或着色。它只是文本和您用它设置的颜色“单独” ”。虽然使用填充,文本远离屏幕边缘,就像边距一样,但是,在填充中,文本远离并且文本和屏幕边缘之间的所有空间都填充了颜色或您选择的任何文本首选项成为。这就是 android margin 和 android padding 的区别。

【讨论】:

【参考方案7】:

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

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

Padding 增加视图的大小,因为边距不增加,因为它在视图之外

【讨论】:

【参考方案8】:

在 Udacity 的 video 中,+Nick Butcher 清楚地解释了边距和填充以及用例之间的区别。摘录如下:

...如果要放大可触摸区域或对象的背景,则使用填充,否则使用边距...

【讨论】:

【参考方案9】:

填充以像素表示,用于视图的左、上、右和下部分。填充可用于将视图的内容偏移特定数量的像素。

例如,左填充 2 会将视图的内容推到左边缘右侧 2 个像素。

可以使用setPadding(int, int, int, int)方法设置填充,并通过调用getPaddingLeft()getPaddingTop()getPaddingRight()getPaddingBottom()进行查询。

边距是边框之外的空间,在边框和该视图旁边的其他元素之间。 请注意,与填充一样,边距完全围绕内容:顶部、底部、右侧和左侧都有边距。 可以使用 setMargins(int left, int top, int right, int bottom) 方法设置边距。

【讨论】:

以上是关于Android初学者填充和边距之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

100% 宽度减去边距和填充 [重复]

从 Javascript 检测真正的边框、填充和边距

scss [mixin]快速添加填充和边距

ActionScript 3 文字填充和边距

文本填充和边距

CSS 使用百分比和边距、填充或边框