La prima dimensione è un array di insiemi di stati, il secondo ist lo stato si imposta. L'array colors elenca i colori per ciascun set di stato corrispondente, pertanto la lunghezza dell'array colors deve corrispondere alla prima dimensione dell'array states (oppure si arresta in modo anomalo quando lo stato viene "utilizzato"). Qui e l'esempio:
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed}, //1
new int[]{android.R.attr.state_focused}, //2
new int[]{android.R.attr.state_focused, android.R.attr.state_pressed} //3
},
new int[] {
Color.RED, //1
Color.GREEN, //2
Color.BLUE //3
}
);
speranza che questo aiuti.
esempio EDIT: un colore lista di stato xml come:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white"/>
<item android:color="@color/black"/>
</selector>
sarebbe simile a questa
ColorStateList myColorStateList = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed},
new int[]{}
},
new int[] {
context.getResources().getColor(R.color.white),
context.getResources().getColor(R.color.black)
}
);
fonte
2013-03-29 12:36:19
Grazie per le informazioni sugli stati "opposti"! – BVB
Questo può essere usato per cambiare il colore di un fab dalla libreria di progettazione. – Tapirboy
ATTENZIONE: vedere la risposta di Roger Alien (e il suo primo commento) per capire che l'ordine degli stati qui è scadente: poiché "abilitato" è il primo, sovrascriverà altri stati che si verificano in genere mentre un pulsante è abilitato. Meglio mettere l'ultimo "abilitato". (O invece di "abilitato", ultimo elemento vuoto/predefinito.) – ToolmakerSteve