Bagaimana cara mengurangi bantalan bagian dalam di sekitar teks di dalam objek tombol Android?

92

Contoh tombol

Jadi, saat ini saya memiliki tombol yang terlihat seperti gambar pertama di atas. Bagaimana cara mengurangi padding di sekitar teks di dalam tombol itu sendiri (Agar lebih terlihat seperti gambar kedua)?

Lebar dan tinggi tata letak diatur sebagai:

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

Bentuk gaya kustom memiliki parameter "

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

Sisanya hanyalah atribut warna dan nilai jari-jari.

Untuk memperjelas, saya ingin bingkai tombol memeluk teks "Login" lebih dekat.

Semua bantuan dan umpan balik sangat dihargai. Terima kasih.

Imran NZ
sumber
1
android: padding = "10dp kurangi 10 dp menjadi 5dp
Raghunandan
Itu terkait dengan bantalan luar Tombol. Saya mengacu pada padding internal "login" dan wadahnya. Terimakasih Meskipun.
Imran NZ
Ini membantu saya - stackoverflow.com/a/19227057/3325759 (penulis - @StinePike) Dari jawaban - Tambahkanandroid:includeFontPadding="false"
Mikelis Kaneps
mengesampingkan padding bekerja untuk saya. textView.setPadding (0,0,0,0);
M. Usman Khan
2
Letakkan android: minHeight = "0dp" android: minWidth = "0dp" di tombol. Ini seharusnya berhasil ..
viper

Jawaban:

234

Saya butuh waktu lama untuk menemukan ini, tetapi "padding" di sekitar teks di tombol tidak benar-benar padding sama sekali. Gaya Widget.Button default menyertakan properti minHeight. Mengubah minHeight pada tombol akan memungkinkan Anda menyesuaikan padding seperti yang diharapkan.

<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>
Steven
sumber
6
Saya menghadapi masalah serupa dengan lebar. Menyetel android: minWidth = "0dp" berfungsi, tapi kemudian pada tombol dengan teks panjang, saya perlu menyetel android: paddingRight dan android: paddingLeft untuk mencegah tata letak yang buruk.
Simon Featherstone
Saya Widget.Button tidak memiliki minHeight (sdk28)
RoR
Properti ada di tombol tema, bukan induk "Widget.Button". Jika Anda menggunakan tema yang berbeda dari "holo", itu mungkin di lokasi yang berbeda. Berikut adalah gaya untuk "holo" android.googlesource.com/platform/frameworks/base/+/master/core/…
Steven
5

Di Material Components Library, MaterialButtonmemiliki gaya default dengan insetBottomdan insetTopdengan nilai 6dp.

Anda dapat mengubahnya di tata letak:

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

atau dengan gaya:

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

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

Gabriele Mariotti
sumber
4

coba ini di file shape.xml kustom Anda

<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">

Anda juga dapat membuat perubahan di xml tombol Anda

android:layout_width="wrap_content"
android:layout_height="wrap_content"
Qadir Hussain
sumber
2
Ini tidak bekerja sama sekali jika Anda membaca apa yang ditanyakan oleh pertanyaan asli
Jeremy
1

Jika Anda menginginkan bantalan atas dan bawah yang lebih kecil, gunakan ini:

 android:paddingTop="2dp"
 android:paddingBottom="2dp"
Neoh
sumber
Itu untuk bantalan di luar tombol. Efek yang saya kejar adalah membuat bingkai Tombol memeluk teks "Login" lebih dekat. Terima kasih.
Imran NZ
1
Itu sudah menjadi bantalan bagian dalam tombol. Anda mungkin perlu memeriksa apakah Anda telah menambahkan baris seperti android:paddingatau android:layout_margin"di tampilan induk <shape />.
Neoh
0

Anda dapat menggunakan gaya Tanpa Batas di AppCompatButton seperti di bawah ini. Gunakan juga warna latar yang Anda sukai.

Widget.AppCompat.Button.Borderless.Colored

Kode tombol

<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" />

Keluaran:

masukkan deskripsi gambar di sini

Shihab Uddin
sumber