ColorDrawable.getColor()
funziona solo con livello di API superiore a 11, in modo da poter utilizzare questo codice per supportarlo dall'inizio. Sto usando la riflessione di sotto del livello di API 11.
public static int getBackgroundColor(TextView textView) {
Drawable drawable = textView.getBackground();
if (drawable instanceof ColorDrawable) {
ColorDrawable colorDrawable = (ColorDrawable) drawable;
if (Build.VERSION.SDK_INT >= 11) {
return colorDrawable.getColor();
}
try {
Field field = colorDrawable.getClass().getDeclaredField("mState");
field.setAccessible(true);
Object object = field.get(colorDrawable);
field = object.getClass().getDeclaredField("mUseColor");
field.setAccessible(true);
return field.getInt(object);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return 0;
}
fonte
2015-05-28 07:18:58
Oppure sto cercando un po 'attraverso internet ma sembra che non ci sia modo di ottenere tale id da un colore definito xml. Probabilmente dovresti cambiare la tua app e gestire i colori dello sfondo a livello di codice, magari mantenendo traccia di cambiamenti di colore durante gli eventi onClick. – Rob013