2015-01-20 4 views
8

Я пытаюсь использовать новый 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"/> 

Любые идеи, что я делаю неправильно здесь?

+0

Вы использовали 'android: duplicateParentState'? – Selvin

+0

У меня нет. Я просто попытался добавить его в свой флажок, но результат тот же! Для справки, я добавил xml для флажка к вопросу. – beeezn

+0

Я не могу воспроизвести это на устройстве Nexus под управлением Android 5.0.1. На каком устройстве вы тестируете это? – alanv

ответ

6

Я сообщил об ошибке в проекте Android. Issue 157166
Исправление для следующей версии 5,1

Это исправлено в 5.1, что не довольно выпущен еще.

Статус: FutureRelease

EDIT 10.03.2015

Выпущенный в 5.1.

 Смежные вопросы

  • Нет связанных вопросов^_^