我尝试理解Button的默认背景(android 26)。
sdk/platforms/android-26/data/res/drawable/btn_default_material.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
的引用:
sdk/platforms/android-26/data/res/drawable/btn_default_mtrl_shape.xml
:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<ripple android:color="?attr/colorControlHighlight">
<item>
<shape android:shape="rectangle"
android:tint="@color/btn_colored_background_material">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/white" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</item>
</ripple>
</inset>
我理解插图。这是按钮背景图像周围的空间。我不明白填充。背景图片中没有文字。
提供一种思考方法:如果删除padding
标记会怎样?
你可能会得出结论,没有任何事情会发生(我不确定,什么都不会发生)。但如果没有任何反应,你有一个问题是什么对它有用?他们为什么把它放在那里?
答案 0 :(得分:3)
此填充将应用于您在所应用的实际填充顶部设置背景的视图。如果将此背景设置为按钮,则文本区域将减少此数量。
答案 1 :(得分:2)
但是你要在按钮中输入文字,必须在你的按钮文本周围设置特定的填充,尝试设置你自己的背景,然后设置大文本,你的文本周围没有paddind这是按钮外观和感觉。
答案 2 :(得分:2)
在此页面的开发者指南网站中解释了paddings
的使用情况:https://developer.android.com/guide/topics/ui/declaring-layout
在页面中间写着:
尺寸,填充和边距
视图的大小用宽度和高度表示。视图实际上具有两对宽度和高度值。
第一对称为测量宽度和测量高度。这些维度定义了视图在其父级中的大小。可以通过调用getMeasuredWidth()
和getMeasuredHeight()
来获取测量的维度。
第二对简称为宽度和高度,有时也称为绘图宽度和绘图高度。这些尺寸定义了屏幕上,绘图时和布局后视图的实际大小。这些值可以但不必与测量的宽度和高度不同。可以通过调用getWidth()
和getHeight()
来获取宽度和高度。
要衡量其尺寸,视图会考虑其填充。 填充以视图的左侧,顶部,右侧和底部的像素表示。 填充可用于将视图内容偏移特定数量的像素。例如,左边的填充为2会将视图的内容推到左边缘右侧2个像素。可以使用setPadding(int, int, int, int)
方法设置填充,并通过调用getPaddingLeft()
进行查询, getPaddingTop()
,getPaddingRight()
和getPaddingBottom()
。
在这篇文章中,您可以找到有关填充及其与边距差异的更多解释:
https://stackoverflow.com/questions/21959050/android-beginner-difference-between-padding-and-margin
答案 3 :(得分:1)
填充仅适用于任何容器,如果您在任何布局中使用填充,它将为您提供所需的空间。
如果您想在内容周围留空,只需使用android:padding
,否则您可以提供自定义填充。如果您使用没有任何布局或容器的填充,那么它将无法工作。在这种情况下唯一可行的是保证金。