2015-01-20 9 views
8

Sto tentando di utilizzare la nuova API Android Lollipop setButtonTintList() per applicare a colori i colori ad android CheckBox es.API21 setButtonTintList su CheckBox

ho impostato il seguente base ColorStateList in 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> 

su una specifica Button click nella mia app ho gonfiare un nuovo layout che contiene un CheckBox nel mio layout principale (mLayoutTotalItemRow) tramite:

View itemRow = getActivity().getLayoutInflater().inflate(R.layout.row_add_purchase, mLayoutTotalItemRow, false); 

Dopo l'inflazione, voglio applicare checkbox_color.xml al nuovo CheckBox tramite (la ragione per cui voglio farlo in codice piuttosto di XML è che voglio impostare diversi colori a seconda delle variabili):

mCheckBoxEnabled.setButtonTintList(mContext.getResources().getColorStateList(R.color.checkbox_color)); 

Ora succede una cosa strana, quando il CheckBox viene creato, è rosso (da cui state_checked="true". Non appena lo deseleziono, è verde (state_chacked="false"). Ma quando lo controllo di nuovo ora, cambia in segno di spunta, ma rimane verde! Quindi in qualche modo lo stato della vista interna non sta cambiando in "checked".

La mia casella di 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"/> 

Tutte le idee che sto facendo male qui?

+0

hai usato 'android: duplicateParentState'? – Selvin

+0

Non ho. Ho appena provato ad aggiungerlo alla mia casella di controllo, ma il risultato è lo stesso! Per riferimento, ho aggiunto il xml per la casella di controllo alla domanda. – beeezn

+0

Non riesco a riprodurlo su un dispositivo Nexus con Android 5.0.1. Su quale dispositivo stai testando questo? – alanv

risposta

6

Ho segnalato il bug del progetto Android. Issue 157166
Fix per la prossima release 5,1

Questo è fissato in 5.1, che non è del tutto ancora rilasciato.

Stato: FutureRelease

EDIT 10.03.2015

Pubblicato nel 5.1.