Volevo personalizzare gli stili per i crostini della mia app. Imposta 4 colori per tutti gli stili. Questa è la mia classe di stili personalizzatiPerché gli stili di crostino personalizzato vengono visualizzati in grigio invece del colore specificato?
public class TapabookCroutonStyle {
public static final int DURATION_INFINITE = -1;
public static final Style ALERT;
public static final Style WARN;
public static final Style CONFIRM;
public static final Style INFO;
public static final int AlertRed = R.color.rojo_vivo;
public static final int WarnOrange= R.color.naranja_resplandeciente;
public static final int ConfirmGreen = R.color.verde_lima;
public static final int InfoYellow = R.color.amarillo_canario;
private static final int DURATION_SHORT = 3000;
private static final int DURATION_MEDIUM = 5000;
private static final int DURATION_LONG = 10000;
static {
ALERT = new Style.Builder()
.setDuration(DURATION_LONG)
.setBackgroundColorValue(AlertRed)
.setHeight(LayoutParams.WRAP_CONTENT)
.build();
WARN = new Style.Builder()
.setDuration(DURATION_MEDIUM)
.setBackgroundColorValue(ConfirmGreen)
.setHeight(LayoutParams.WRAP_CONTENT)
.build();
CONFIRM = new Style.Builder()
.setDuration(DURATION_MEDIUM)
.setBackgroundColorValue(ConfirmGreen)
.setHeight(LayoutParams.WRAP_CONTENT)
.build();
INFO = new Style.Builder()
.setDuration(DURATION_MEDIUM)
.setBackgroundColorValue(InfoYellow)
.setHeight(LayoutParams.WRAP_CONTENT)
.build();
}
}
colori sono impostate nel file color.xml
<color name="verde_lima">#aaee22</color>
<color name="rojo_vivo">#E8110F</color>
<color name="naranja_resplandeciente">#FF6600</color>
<color name="amarillo_canario">#FFCC00</color>
Io uso involucri di chiamare crostini.
/** Crouton Wrappers **/
public void croutonAlert(int stringId){
Crouton.makeText(this, stringId, TapabookCroutonStyle.ALERT).show();
}
public void croutonAlert(String text){
Crouton.makeText(this, text, TapabookCroutonStyle.ALERT).show();
}
public void croutonInfo(int stringId){
Crouton.makeText(this, stringId, TapabookCroutonStyle.INFO).show();
}
public void croutonInfo(String text){
Crouton.makeText(this, text, TapabookCroutonStyle.INFO).show();
}
public void croutonConfirm(int stringId){
Crouton.makeText(this, stringId, TapabookCroutonStyle.CONFIRM).show();
}
public void croutonConfirm(String text){
Crouton.makeText(this, text, TapabookCroutonStyle.CONFIRM).show();
}
public void croutonWarn(int stringId){
Crouton.makeText(this, stringId, TapabookCroutonStyle.WARN).show();
}
public void croutonWarn(String text){
Crouton.makeText(this, text, TapabookCroutonStyle.WARN).show();
}
Dal momento che sto usando ActionBarSherlock, il mio appTheme eredita da quello e non dalla Holo. Su una diversa app che usava i crostini standard non poneva problemi. Tuttavia, qui i crostini personalizzati non verranno visualizzati. L'ho provato su una ROM personalizzata 2.2 e su 4.2 (versione google).
L'unica domanda che ho trovato su questo argomento è questo Holo Colors on pre Holo Devices? e non si occupa di stili personalizzati (e il problema non si riproduce su "dispositivi holo" a differenza del mio caso).
Qualcuno sa perché i quattro stili si presentano grigi?
Edit: ho appena provato e regolare (built-in) stili come Style.ALERT fanno mostrare i colori corretti ... Inoltre, ho cambiato i colori riferimenti da R.color.mycolor al loro valore in R (ad esempio, : 0x7f06000c) dal momento che è come la classe di stile originale nella biblioteca Crostino di pane lo fa, e ancora lo stesso grigio traslucido ... ho anche controllato il holo_red_light originale per controllare i valori alfa e li aggiunge ai miei colori personalizzati
<color name="verde_lima">#FFaaee22</color>
<color name="rojo_vivo">#FFE8110F</color>
<color name="naranja_resplandeciente">#FFFF6600</color>
<color name="amarillo_canario">#FFFFCC00</color>
ma ancora niente.
Ha funzionato! Ho usato setBackgroundColorValue copiandolo dalla [classe Style originale] (https://github.com/keyboardsurfer/Crouton/blob/master/library/src/de/keyboardsurfer/android/widget/crouton/Style.java) quindi ho ancora non capisco perché funzioni per questo e non per il mio. Ma funziona, ed è quello che importa :) – Frank
La classe Style originale usa _color values_ e non _resource id's_ ;-) – keyboardsurfer