Cách xóa bóng nút (android)


Câu trả lời:


403

Một cách khác là thêm

style="?android:attr/borderlessButtonStyle"

vào Nút xml của bạn như được ghi lại ở đây http://developer.android.com/guide/topics/ui/controls/button.html

Một ví dụ sẽ là

<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />

Điều này loại bỏ kiểu nút, ei bóng và chạm nổi. Thêm một bộ chọn với hình dạng là tùy chọn. Đây là một câu trả lời chính xác hơn.
Juan Jose Melero Gómez

35
Ngoài ra, tôi sử dụng một kiểu tùy chỉnh cho nút của tôi. bạn có thể mở rộng kiểu tùy chỉnh của mình từ: <style name = "MyCustomButtonStyle" Parent = "Widget.AppCompat.Button.Borderless">
Tobliug

125

Một cách đơn giản hơn để làm là thêm thẻ này vào nút của bạn:

android:stateListAnimator="@null"

mặc dù nó yêu cầu API cấp 21 trở lên ..


2
Làm việc rất nhiều với tôi
KoreanXcodeWorker

1
Tôi thích phương pháp này tốt hơn, nó linh hoạt hơn.
Ayejuni Ilemobayo Kings

@Alon Kogan, có bất kỳ khả năng tương thích ngược nào để sử dụng android:stateListAnimator thuộc tính không?
bluware

Giải pháp này cho phép bạn tạo một bot kiểu phải kế thừa từ borderlessButtonStylekiểu, giúp bạn linh hoạt hơn.
Juan Jose Melero Gómez

Đây chỉ là giải pháp hiệu quả với tôi, thẻ
BorderlessButtonStyle

61

Tôi sử dụng một phong cách tùy chỉnh

<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>

Đừng quên thêm

<item name="android:textAllCaps">false</item>

nếu không, văn bản nút sẽ ở UpperCase.


59

Kotlin

stateListAnimator = null

Java

setStateListAnimator(null);

XML

android:stateListAnimator="@null"

2
Dễ dàng và sạch sẽ.
JCasso

23

thử : android:stateListAnimator="@null"


9
Mặc dù điều này có thể giải quyết vấn đề của OP, tôi khuyên bạn nên thêm một số bối cảnh cho nó. Tại sao nó sẽ giúp? Ngoài ra, hãy thử bản này, một chút sai lầm. Bạn có chắc chắn nó sẽ giải quyết vấn đề, hoặc chỉ đoán? Nếu vậy, bạn nên viết bình luận thay thế.
GergelyPolonkai

Nó yêu cầu API 21.
CoolMind

14

Nút desing vật liệu thêm vào nút xml: style="@style/Widget.MaterialComponents.Button.UnelevatedButton"


Đôi khi nó tương tự như stackoverflow.com/a/38004981/2914140 , nhưng một nút màu xám ở trạng thái bị vô hiệu hóa trở nên nhẹ hơn.
CoolMind

6

Sử dụng điều này làm nền cho nút của bạn có thể giúp ích, thay đổi màu sắc theo nhu cầu của bạn

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape android:shape="rectangle">
            <solid android:color="@color/app_theme_light" />
            <padding
                android:left="8dp"
                android:top="4dp"
                android:right="8dp"
                android:bottom="4dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/app_theme_dark" />
            <padding
                android:left="8dp"
                android:top="4dp"
                android:right="8dp"
                android:bottom="4dp" />
        </shape>
    </item>
</selector>

4
Bạn có thể giải thích làm thế nào điều này hoạt động? Nó đã không loại bỏ bóng đổ cho tôi.
CACuzcatlan

nó thay thế nền ban đầu bằng bóng, với nền này bằng màu đặc
dlohani

3

câu trả lời @ Alt-Cat làm việc cho tôi!

R.attr.borderlessButtonStyle không chứa bóng.

và tài liệu của nút là tuyệt vời.

Ngoài ra, bạn có thể đặt kiểu này trên nút tùy chỉnh của mình, trong hàm tạo thứ hai.

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }

3

Tất cả các câu trả lời trên là tuyệt vời, nhưng tôi sẽ đề xuất một tùy chọn khác:

<style name="FlatButtonStyle" parent="Base.Widget.AppCompat.Button">
 <item name="android:stateListAnimator">@null</item>
 <!-- more style custom here --> 
</style>


Nó tương tự như Alon Kogan ( stackoverflow.com/a/39122825/2914140 ).
CoolMind

Làm thế nào khác với 5ish ở trên?
zeroDivider

2

Thay vì Nút, bạn có thể sử dụng TextView và thêm trình nghe nhấp chuột trong mã java.

I E

trong bố cục hoạt động xml:

<TextView
    android:id="@+id/btn_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryDark"
    android:text="@string/btn_text"
    android:gravity="center"
    android:textColor="@color/colorAccent"
    android:fontFamily="sans-serif-medium"
    android:textAllCaps="true" />

trong tệp java hoạt động:

TextView btnTextView = (TextView) findViewById(R.id.btn_text_view);
btnTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // handler code
            }
        });

Đây không phải là câu trả lời đúng, nhưng bạn thực sự đã giúp tôi khắc phục vấn đề của mình với một vấn đề tương tự, vì vậy cảm ơn bạn!
hộp

aha ý tưởng hay - giúp tôi khắc phục nhanh -
Rohit Kumar
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.