Thứ nguyên đầu tiên là một loạt các bộ trạng thái, thứ hai ist trạng thái được đặt. Mảng màu liệt kê các màu cho từng bộ trạng thái phù hợp, do đó độ dài của mảng màu phải khớp với thứ nguyên đầu tiên của mảng trạng thái (hoặc nó sẽ sụp đổ khi trạng thái "được sử dụng"). Ở đây và ví dụ:
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed}, //1
new int[]{android.R.attr.state_focused}, //2
new int[]{android.R.attr.state_focused, android.R.attr.state_pressed} //3
},
new int[] {
Color.RED, //1
Color.GREEN, //2
Color.BLUE //3
}
);
hy vọng điều này sẽ hữu ích.
EDIT dụ: một xml màu danh sách nhà nước như:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white"/>
<item android:color="@color/black"/>
</selector>
sẽ trông như thế này
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed},
new int[]{}
},
new int[] {
context.getResources().getColor(R.color.white),
context.getResources().getColor(R.color.black)
}
);
Nguồn
2013-03-29 12:36:19
Cảm ơn thông tin về trạng thái "ngược lại"! – BVB
Điều này có thể được sử dụng thay đổi màu sắc của một fab từ thư viện thiết kế. – Tapirboy
THẬN TRỌNG: Xem câu trả lời của Roger Alien (và nhận xét đầu tiên của họ) để hiểu rằng thứ tự các trạng thái ở đây kém: vì "bật" trước tiên, nó sẽ ghi đè các trạng thái khác thường xảy ra khi nút được bật. Tốt hơn là đặt "bật" cuối cùng. (Hoặc thay vì "kích hoạt", một mục rỗng/mặc định cuối cùng.) – ToolmakerSteve