Android:在形状绘图中使用填充有什么用?

时间:2018-06-02 10:52:37

标签: android android-view android-drawable android-button

我尝试理解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标记会怎样?

你可能会得出结论,没有任何事情会发生(我不确定,什么都不会发生)。但如果没有任何反应,你有一个问题是什么对它有用?他们为什么把它放在那里?

4 个答案:

答案 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,否则您可以提供自定义填充。如果您使用没有任何布局或容器的填充,那么它将无法工作。在这种情况下唯一可行的是保证金。