Bir Android düğme nesnesi içindeki metnin etrafındaki iç dolguyu nasıl azaltırım?


92

Örnek düğmeler

Yani, şu anda yukarıdaki ilk resme benzeyen bir düğmem var. Düğmenin kendi içindeki metnin etrafındaki dolguyu nasıl azaltabilirim (İkinci resme daha çok benzemek için)?

Düzen genişliği ve yüksekliği şu şekilde ayarlanır:

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

Özel stil şeklinin parametreleri var "

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

Gerisi sadece renk özellikleri ve yarıçap değerleridir.

Sadece açıklığa kavuşturmak için, düğme çerçevesinin "Giriş" metnine daha yakın olmasını istiyorum.

Tüm yardım ve geri bildirimler çok takdir edilmektedir. Teşekkürler.


1
android: padding = "10 dp, 10
dp'yi

Bu, Düğmenin dış dolgusu ile ilgilidir. "Oturum açma" ve kapsayıcısının dahili dolgusuna atıfta bulunuyorum. Yine de teşekkürler.
Imran NZ

Bu bana yardımcı oldu - stackoverflow.com/a/19227057/3325759 (yazar - @StinePike) Yanıttan - Ekleandroid:includeFontPadding="false"
Mikelis Kaneps

dolguyu geçersiz kılmak benim için çalışıyor. textView.setPadding (0,0,0,0);
M. Usman Khan

2
Düğmeye android: minHeight = "0dp" android: minWidth = "0dp" yazın. Bu işe
yaramalı

Yanıtlar:


234

Bunu bulmam sonsuza kadar sürdü, ancak bir düğmedeki metnin etrafındaki "dolgu" gerçekten de dolgulu değil. Varsayılan Widget.Button stili bir minHeight özelliği içerir. Düğmedeki minHeight değerini değiştirmek, dolguyu beklendiği gibi ayarlamanıza olanak tanır.

<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
Genişlikle ilgili benzer bir sorunla karşı karşıyaydım. Android ayarı: minWidth = "0dp" çalıştı, ancak daha sonra uzun metin içeren düğmelerde kötü düzeni önlemek için android: paddingRight ve android: paddingLeft'in ayarlanmasını zorunlu kıldı.
Simon Featherstone

Benim Widget.Button hiçbir MinHeight (sdk28) sahiptir
ror

Özellik ana "Widget.Button" değil, tema düğmesindedir. "Holo" dan farklı bir tema kullanıyorsanız, farklı bir konumda olabilir. İşte "holo" için stiller android.googlesource.com/platform/frameworks/base/+/master/core/…
Steven

5

Malzeme Bileşenleri Kitaplığında, değeri MaterialButtonile insetBottomve insetTopdeğeri olan varsayılan bir stili vardır 6dp.

Bunları düzende değiştirebilirsiniz:

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

veya bir tarzda:

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

görüntü açıklamasını buraya giringörüntü açıklamasını buraya girin


4

bunu özel shape.xml dosyanızda deneyin

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

ayrıca düğmenizin xml'sinde değişiklik yapabilirsiniz.

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

2
Orijinal sorunun ne sorduğunu okursanız, bu hiç işe yaramaz
Jeremy

1

Daha küçük bir üst ve alt dolgu istiyorsanız, şunu kullanın:

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

Bu, düğmenin dışındaki dolgu için. Peşinde olduğum etki, Düğme çerçevesinin "Oturum Açma" metnine daha yakın olmasını sağlamaktır. Teşekkürler.
Imran NZ

1
Bu zaten düğmenin iç dolgusu. Gibi android:paddingveya android:layout_margin"üst görünümlerinde satırlar ekleyip eklemediğinizi kontrol etmeniz gerekebilir <shape />.
Neoh

0

AppCompatButton'da Borderless stilini aşağıdaki gibi kullanabilirsiniz . Ayrıca tercih ettiğiniz arka plan rengini kullanın.

Widget.AppCompat.Button.Borderless.Colored

Düğme kodu

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

Çıktı:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.