Як зменшити внутрішнє заповнення навколо тексту в об’єкті кнопки 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: padding = "10dp зменшити 10 dp до 5dp
Raghunandan

Це стосується зовнішнього заповнення кнопки. Я маю на увазі внутрішнє заповнення "логіна" та його контейнер. Хоча дякую.
Імран NZ

Це допомогло мені - stackoverflow.com/a/19227057/3325759 (автор - @StinePike) З відповіді - Addandroid:includeFontPadding="false"
Мікеліс Kaņeps

перевизначення заповнення працює для мене. textView.setPadding (0,0,0,0);
М. Усман-хан

2
Помістіть в кнопку android: minHeight = "0dp" android: minWidth = "0dp". Це має спрацювати ..
гадюка

Відповіді:


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, щоб запобігти поганому розташуванню.
Саймон Фезерстоун

Мій віджет. Кнопка не має minHeight (sdk28)
рор

Властивість знаходиться на кнопці теми, а не на батьківському "Widget.Button". Якщо ви використовуєте іншу тему, ніж "голограма", вона може бути в іншому місці. Ось стилі для "holo" android.googlesource.com/platform/frameworks/base/+/master/core/…
Стівен

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
Це зовсім не працює, якщо ви читаєте те, що задає оригінальне запитання
Джеремі

2

У бібліотеці компонентів матеріалу, то 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>

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


1

Якщо ви хочете зменшити верхнє та нижнє заповнення, використовуйте це:

 android:paddingTop="2dp"
 android:paddingBottom="2dp"

Це для прокладки поза кнопкою. Ефект, за яким я переслідую, полягає в тому, щоб наблизити рамку кнопки, щоб обняти текст "Вхід". Дякую.
Імран NZ

1
Це вже внутрішнє заповнення кнопки. Можливо, вам доведеться перевірити, чи додали ви рядки, подібні до android:paddingчи android:layout_margin"в батьківських поданнях <shape />.
Neoh,

0

Ви можете використовувати стиль Без полів у AppCompatButton, як показано нижче. Також використовуйте колір тла, який вам подобається.

Віджет.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" />

Вихід:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.