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.Colored
kiểu mới sử dụng chủ đề của bạn colorButtonNormal
cho màu bị tắt và colorAccent
cho 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 colorButtonNormal
hoặc colorAccent
, bạn có thể sử dụng một ThemeOverlay
như được giải thích trong pro-tip này và android:theme
trê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/colorPrimary
và 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 đó.