Я пытаюсь использовать новый Android Lollipop API setButtonTintList()
, чтобы программно применять цвета для android CheckBox
es.API21 setButtonTintList на CheckBox
Я поставил следующие основные ColorStateList
в 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>
На определенном Button
мыши в моем приложении я надуть новый макет, содержащий CheckBox
в мой основной раскладке (mLayoutTotalItemRow
) через:
View itemRow = getActivity().getLayoutInflater().inflate(R.layout.row_add_purchase, mLayoutTotalItemRow, false);
После инфляции я хочу применить checkbox_color.xml
к новому CheckBox
через (причина, по которой я хочу сделать это в коде, а чем XML является то, что я хочу, чтобы установить различные цвета в зависимости от некоторых переменных):
mCheckBoxEnabled.setButtonTintList(mContext.getResources().getColorStateList(R.color.checkbox_color));
Теперь странная вещь происходит, когда CheckBox
сначала создается, это красный (отсюда state_checked="true"
. Как только я сниму его, он зеленый (state_chacked="false"
). Но когда я проверяю его снова, он меняется на отметку, но он остается зеленым! Следовательно, как-то состояние внутреннего представления не меняется на «проверено».
Мой флажок XML:
<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"/>
Любые идеи, что я делаю неправильно здесь?
Вы использовали 'android: duplicateParentState'? – Selvin
У меня нет. Я просто попытался добавить его в свой флажок, но результат тот же! Для справки, я добавил xml для флажка к вопросу. – beeezn
Я не могу воспроизвести это на устройстве Nexus под управлением Android 5.0.1. На каком устройстве вы тестируете это? – alanv