Tôi đang cố gắng sử dụng API Lollipop Android mới setButtonTintList()
để áp dụng lập trình màu sắc cho android CheckBox
es.API21 setButtonTintList trên Hộp kiểm
tôi đã thiết lập sau cơ bản ColorStateList
trong checkbox_color.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:color="@color/red" />
<item android:state_checked="false"
android:color="@color/green" />
</selector>
Trên một Button
nhấp chuột cụ thể trong ứng dụng của tôi, tôi thổi phồng một cách bố trí mới có chứa một CheckBox
vào bố cục chính của tôi (mLayoutTotalItemRow
) thông qua:
View itemRow = getActivity().getLayoutInflater().inflate(R.layout.row_add_purchase, mLayoutTotalItemRow, false);
Sau khi lạm phát, tôi muốn áp dụng checkbox_color.xml
cho CheckBox
mới thông qua (lý do tôi muốn thực hiện việc này trong mã thay vì hơn xml là tôi muốn thiết lập màu sắc khác nhau tùy thuộc vào một số biến):
mCheckBoxEnabled.setButtonTintList(mContext.getResources().getColorStateList(R.color.checkbox_color));
Bây giờ một điều kỳ lạ xảy ra, khi CheckBox
là lần đầu tiên tạo ra, đó là màu đỏ (do đó state_checked="true"
. Ngay sau khi tôi bỏ chọn nó, nó có màu xanh lá cây (state_chacked="false"
). Nhưng khi tôi kiểm tra nó một lần nữa, nó thay đổi để đánh dấu nhưng nó vẫn xanh! Do đó bằng cách nào đó trạng thái xem nội bộ không thay đổi thành "đã kiểm tra".
hộp kiểm xml của tôi:
<CheckBox
android:id="@+id/cb_item_enabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/key_line_1_minus_checkbox_margin"
android:layout_marginEnd="@dimen/key_line_2_minus_key_line_1_minus_checkbox"
android:layout_gravity="center_vertical"
android:checked="true"/>
Bất kỳ ý tưởng những gì tôi đang làm sai ở đây?
bạn đã sử dụng 'android: duplicateParentState' chưa? – Selvin
Tôi không có. Tôi chỉ cố gắng thêm nó vào hộp kiểm của tôi nhưng kết quả là như nhau! Để tham khảo, tôi đã thêm xml cho hộp kiểm vào câu hỏi. – beeezn
Tôi không thể tạo lại điều này trên thiết bị Nexus chạy Android 5.0.1. Bạn đang thử nghiệm thiết bị này trên thiết bị nào? – alanv