Как уменьшить внутренние отступы вокруг текста в объекте кнопки Android?

91

Примеры кнопок

Итак, на данный момент у меня есть кнопка, которая выглядит как первое изображение выше. Как уменьшить отступ вокруг текста внутри самой кнопки (чтобы он больше походил на второе изображение)?

Ширина и высота макета задаются как:

android:layout_width="match_parent"
android:layout_height="wrap_content"

Форма нестандартного стиля имеет параметры "

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">

Остальное - это просто атрибуты цвета и значения радиусов.

Чтобы было понятно, я хочу, чтобы рамка кнопки приближалась к тексту «Войти».

Любая помощь и отзывы приветствуются. Спасибо.

Имран Н.З.
источник
1
Android: набивка = "10dp сократить 10 дп до 5 диоптрий
Raghunandan
Это относится к внешнему заполнению кнопки. Я имею в виду внутреннее заполнение логина и его контейнера. Спасибо хоть.
Imran NZ
Это помогло мне - stackoverflow.com/a/19227057/3325759 (автор - @StinePike) Из ответа - Добавитьandroid:includeFontPadding="false"
Микелис Канепс
переопределение заполнения работает для меня. textView.setPadding (0,0,0,0);
М. Усман Хан
2
Поместите android: minHeight = "0dp" android: minWidth = "0dp" в кнопку. Это должно сработать ..
viper

Ответы:

234

Мне потребовалась целая вечность, чтобы найти это, но "отступы" вокруг текста на кнопке на самом деле вовсе не отступы. Стиль Widget.Button по умолчанию включает свойство minHeight. Изменение minHeight на кнопке позволит вам настроить отступы должным образом.

<Button
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/test"
        android:textColor="@color/black"
        android:minHeight="40dip"/>


<style name="Widget.Holo.Button" parent="Widget.Button">
    <item name="android:background">@android:drawable/btn_default_holo_dark</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    <item name="android:textColor">@android:color/primary_text_holo_dark</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>
Стивен
источник
6
У меня была аналогичная проблема с шириной. Установка android: minWidth = "0dp" работала, но затем на кнопках с длинным текстом мне потребовалось установить android: paddingRight и android: paddingLeft, чтобы предотвратить плохую компоновку.
Саймон Фезерстоун
My Widget.Button не имеет minHeight (sdk28)
ror
Свойство находится на кнопке темы, а не на родительском элементе «Widget.Button». Если вы используете тему, отличную от «голографической», она может находиться в другом месте. Вот стили для "holo" android.googlesource.com/platform/frameworks/base/+/master/core/…
Стивен
5

В Библиотеке компонентов материала для MaterialButtonнего используется стиль по умолчанию со значением insetBottomи insetTopзначением 6dp.

Вы можете изменить их в макете:

  <com.google.android.material.button.MaterialButton
      android:insetTop="0dp"
      android:insetBottom="0dp"
      ../>

или в стиле:

 <style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
 </style>

введите описание изображения здесьвведите описание изображения здесь

Габриэле Мариотти
источник
4

попробуйте это в своем собственном файле shape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="1dp"
android:padding="1dp">

также вы можете внести изменения в xml вашей кнопки

android:layout_width="wrap_content"
android:layout_height="wrap_content"
Кадир Хуссейн
источник
2
Это вообще не сработает, если вы прочитаете, что задает исходный вопрос
Джереми
1

Если вы хотите уменьшить верхний и нижний отступы, используйте это:

 android:paddingTop="2dp"
 android:paddingBottom="2dp"
Неох
источник
Это для заполнения за пределами кнопки. Эффект, которого я добиваюсь, - это заставить рамку Button ближе прилегать к тексту «Login». Спасибо.
Imran NZ
1
Это уже внутреннее заполнение кнопки. Возможно, вам потребуется проверить, добавили ли вы строки, такие как android:paddingили android:layout_margin"в родительских представлениях <shape />.
Neoh
0

Вы можете использовать стиль без границ в AppCompatButton, как показано ниже. Также используйте желаемый цвет фона.

Widget.AppCompat.Button.Borderless.Colored

Код кнопки

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_visa_next"
        android:background="@color/colorPrimary"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spacing_normal"
        android:text="@string/next"
        android:textColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

Выход:

введите описание изображения здесь

Шихаб Уддин
источник