Làm cách nào để giảm phần đệm bên trong xung quanh văn bản trong đối tượng nút Android?


91

Các nút mẫu

Vì vậy, hiện tại tôi có một nút trông giống như hình ảnh đầu tiên ở trên. Làm cách nào để giảm khoảng đệm xung quanh văn bản bên trong chính nút (Để trông giống hình ảnh thứ hai hơn)?

Chiều rộng và chiều cao của bố cục được đặt là:

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

Hình dạng kiểu tùy chỉnh có các thông số "

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

Với phần còn lại chỉ là thuộc tính màu và giá trị bán kính.

Để nói rõ hơn, tôi muốn khung của nút ôm dòng chữ "Đăng nhập" gần hơn.

Tất cả sự trợ giúp và phản hồi được đánh giá rất cao. Cảm ơn.


1
android: padding = "10dp giảm 10 dp thành 5dp
Raghunandan

Điều đó liên quan đến phần đệm bên ngoài của Nút. Tôi đang đề cập đến phần đệm bên trong của "đăng nhập" và vùng chứa của nó. Xin cảm ơn.
Imran NZ

Điều này đã giúp tôi - stackoverflow.com/a/19227057/3325759 (tác giả - @StinePike) Từ câu trả lời - Addandroid:includeFontPadding="false"
Mikelis Kaneps

overriding padding hoạt động cho tôi. textView.setPadding (0,0,0,0);
M. Usman Khan

2
Đặt android: minHeight = "0dp" android: minWidth = "0dp" vào nút. Điều này sẽ hoạt động ..
viper

Câu trả lời:


234

Tôi đã mất mãi mãi để tìm ra điều này nhưng "phần đệm" xung quanh văn bản trong một nút không thực sự đệm chút nào. Kiểu Widget.Button mặc định bao gồm một thuộc tính minHeight. Thay đổi minHeight trên nút sẽ cho phép bạn điều chỉnh đệm như mong đợi.

<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
Tôi đã đối mặt với một vấn đề tương tự với chiều rộng. Cài đặt android: minWidth = "0dp" hoạt động, nhưng sau đó trên các nút có văn bản dài, tôi yêu cầu đặt android: paddingRight và android: paddingLeft để ngăn bố cục kém.
Simon Featherstone

My Widget.Button không có minheight (sdk28)
ROR

Thuộc tính nằm trên nút chủ đề, không phải là "Widget.Button" mẹ. Nếu bạn đang sử dụng một chủ đề khác với "holo", nó có thể ở một vị trí khác. Đây là các kiểu cho "holo" android.googlesource.com/platform/frameworks/base/+/master/core/…
Steven

4

hãy thử điều này trong tệp shape.xml tùy chỉnh của bạn

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

bạn cũng có thể thực hiện thay đổi trong xml của nút

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

2
Điều này không làm việc ở tất cả nếu bạn đọc những gì các câu hỏi ban đầu là yêu cầu
Jeremy

3

Trong Thư viện Thành phần Vật liệu, MaterialButtoncó kiểu mặc định với insetBottominsetTopvới giá trị 6dp.

Bạn có thể thay đổi chúng trong bố cục:

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

hoặc theo phong cách:

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

nhập mô tả hình ảnh ở đâynhập mô tả hình ảnh ở đây


1

Nếu bạn muốn một phần đệm trên và dưới nhỏ hơn, hãy sử dụng cái này:

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

Đó là cho phần đệm bên ngoài nút. Hiệu ứng mà tôi đang theo đuổi là để có được khung Nút ôm lấy văn bản "Đăng nhập" gần hơn. Cảm ơn.
Imran NZ

1
Đó đã là phần đệm bên trong của nút. Bạn có thể cần phải kiểm tra xem bạn đã thêm các dòng giống android:paddinghoặc android:layout_margin"trong chế độ xem chính của <shape />.
Neoh

0

Bạn có thể sử dụng kiểu Borderless trong AppCompatButton như bên dưới. Cũng sử dụng màu nền mà bạn ưa thích.

Widget.AppCompat.Button.Borderless.Colored

Mã nút

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

Đầu ra:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.