Khi bạn sử dụng android:background, bạn đang thay thế phần lớn kiểu dáng và giao diện của một nút bằng một màu trống.
Cập nhật: Kể từ phiên bản 23.0.0 của AppCompat , có một Widget.AppCompat.Button.Coloredkiểu mới sử dụng chủ đề của bạn colorButtonNormalcho màu bị tắt và colorAccentcho màu được bật.
Điều này cho phép bạn áp dụng nó vào nút của bạn trực tiếp thông qua
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Nếu bạn cần một tùy chỉnh colorButtonNormalhoặc colorAccent, bạn có thể sử dụng một ThemeOverlaynhư được giải thích trong pro-tip này và android:themetrên nút.
Trả lời trước
Bạn có thể sử dụng drawable trong thư mục v21 cho nền của mình, chẳng hạn như:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
Điều này sẽ đảm bảo màu nền của bạn là ?attr/colorPrimaryvà có hoạt ảnh gợn mặc định bằng cách sử dụng mặc định ?attr/colorControlHighlight(mà bạn cũng có thể đặt trong chủ đề của mình nếu bạn muốn).
Lưu ý: bạn sẽ phải tạo một bộ chọn tùy chỉnh ít hơn v21:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/primaryPressed" android:state_pressed="true"/>
<item android:drawable="@color/primaryFocused" android:state_focused="true"/>
<item android:drawable="@color/primary"/>
</selector>
Giả sử bạn có một số màu bạn muốn cho trạng thái mặc định, được nhấn và tập trung. Cá nhân, tôi đã chụp ảnh màn hình của một gợn sóng giữa chừng được chọn và kéo trạng thái chính / tập trung ra khỏi đó.