Android: Какая польза от отступов в форме drawables? - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь понять фон по умолчанию для кнопки (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 голосов
/ 08 июня 2018

Объяснение использования 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

0 голосов
/ 04 июня 2018

Заполнение применяется только в любом контейнере, если вы используете заполнение в любом макете, оно предоставит вам необходимое пространство.

Если вы хотите использовать пространство вокруг содержимого, просто используйте android:padding, иначе вы можетедать пользовательские отступы.Если вы используете заполнение без какого-либо макета или контейнера, то оно не будет работать.Единственное, что будет работать в этом случае, это маржа.

0 голосов
/ 08 июня 2018

Это заполнение будет применено к виду, для которого вы устанавливаете фон поверх фактического примененного заполнения.Если вы установите этот фон для кнопок, текстовая область будет уменьшена на эту величину.

0 голосов
/ 02 июня 2018

Но вы собираетесь ввести текст в кнопке, чтобы вокруг текста кнопки была определенная подушка, попробуйте установить собственный фон, затем установите большой текст, чтобы вокруг текста не было отступа, это для вида кнопки иЧувствовать.

...