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?
hai usato 'android: duplicateParentState'? – Selvin
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
Non riesco a riprodurlo su un dispositivo Nexus con Android 5.0.1. Su quale dispositivo stai testando questo? – alanv