ฉันจะลดช่องว่างภายในรอบข้อความภายในออบเจ็กต์ปุ่ม Android ได้อย่างไร


93

ปุ่มตัวอย่าง

ดังนั้นในขณะนี้ฉันมีปุ่มที่ดูเหมือนภาพแรกด้านบน ฉันจะลดช่องว่างรอบข้อความภายในปุ่มได้อย่างไร (เพื่อให้ดูเหมือนภาพที่สองมากขึ้น)

ความกว้างและความสูงของเค้าโครงถูกตั้งค่าเป็น:

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

ที่เกี่ยวข้องกับช่องว่างด้านนอกของปุ่ม ฉันหมายถึงช่องว่างภายในของ "ล็อกอิน" และคอนเทนเนอร์ ขอบคุณมาก
Imran NZ

สิ่งนี้ช่วยฉันได้ - stackoverflow.com/a/19227057/3325759 (ผู้สร้าง - @StinePike) จากคำตอบ - เพิ่มandroid:includeFontPadding="false"
Mikelis Kaneps

การลบล้างช่องว่างภายในได้ผลสำหรับฉัน textView.setPadding (0,0,0,0);
M. Usman Khan

2
ใส่ android: minHeight = "0dp" android: minWidth = "0dp" ในปุ่ม น่าจะได้ผล ..
viper

คำตอบ:


235

ฉันใช้เวลาตลอดเพื่อค้นหาสิ่งนี้ แต่ "ช่องว่างภายใน" รอบ ๆ ข้อความในปุ่มไม่ได้มีช่องว่างภายในเลย สไตล์วิดเจ็ตเริ่มต้นมีคุณสมบัติ 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>

7
ฉันประสบปัญหาที่คล้ายกันกับความกว้าง การตั้งค่า android: minWidth = "0dp" ใช้งานได้ แต่ในปุ่มที่มีข้อความยาวฉันต้องตั้งค่า android: paddingRight และ android: paddingLeft เพื่อป้องกันการจัดวางที่ไม่ดี
Simon Featherstone

ฉัน Widget.Button ไม่มี minHeight (sdk28)
รอ

คุณสมบัติอยู่บนปุ่มธีมไม่ใช่ "Widgetbutton" ระดับบนสุด หากคุณใช้ธีมอื่นที่ไม่ใช่ "holo" อาจอยู่ในตำแหน่งอื่น นี่คือรูปแบบสำหรับ "holo" android.googlesource.com/platform/frameworks/base/+/master/core/…
Steven

ยังคงมีช่องว่างMaterialButtonภายในความสูงไม่มีอะไรทำถ้าคุณตั้งค่าheight48dp และminHeight48dp คุณจะยังเห็นช่องว่างภายในความสูงพื้นหลังของปุ่มจะเล็กกว่า 48dp
user924

มันแทรกandroid:insetTop="0dp" android:insetBottom="0dp"เข้าไปในที่สุดมันจะลบช่องว่างภายในและความสูงของปุ่มพื้นหลังจะเป็น 48dp
user924

7

ในห้องสมุดส่วนประกอบวัสดุที่MaterialButtonมีรูปแบบเริ่มต้นที่มีinsetBottomและที่มีค่าของinsetTop6dp

คุณสามารถเปลี่ยนได้ในเค้าโครง:

  <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
คำตอบที่ถูกต้องเท่านั้น
user924

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
สิ่งนี้จะใช้ไม่ได้เลยหากคุณอ่านคำถามเดิมที่ถาม
Jeremy

1

หากคุณต้องการให้ช่องว่างด้านบนและด้านล่างเล็กลงให้ใช้สิ่งนี้:

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

สำหรับช่องว่างภายในปุ่ม ผลที่ตามมาคือทำให้กรอบปุ่มกอดข้อความ "เข้าสู่ระบบ" ให้ใกล้ขึ้น ขอบคุณ.
Imran NZ

1
นั่นคือช่องว่างภายในของปุ่มอยู่แล้ว คุณอาจจะต้องตรวจสอบว่าคุณได้เพิ่มสายเหมือนandroid:paddingหรือในมุมมองของผู้ปกครองandroid:layout_margin" <shape />
Neoh

0

คุณสามารถใช้สไตล์ไร้ขอบในAppCompatButtonดังด้านล่าง ใช้สีพื้นหลังที่คุณต้องการ

Widget.AppCompat ปุ่มไร้ขอบสี

รหัสปุ่ม

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

เอาท์พุต:

ป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.