2015-01-20 15 views
8

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?

+0

bạn đã sử dụng 'android: duplicateParentState' chưa? – Selvin

+0

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

+0

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

Trả lời

6

Tôi đã báo cáo lỗi cho dự án Android. Issue 157166
Fix cho phiên bản tiếp theo 5,1

này được cố định trong 5.1, mà không phải là khá phát hành được nêu ra.

Tình trạng: FutureRelease

EDIT 10.03.2015

Phát hành 5.1.

Các vấn đề liên quan