我想为我的应用程序的烤面包片自定义样式。为多种样式设置4种颜色。这是我的自定义样式类
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();
}
}
颜色在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>
我使用包装器来调用Croutons。
/** 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();
}
由于我正在使用ActionBarSherlock,我的appTheme继承了它,而不是来自holo。在一个使用标准油炸面包丁的不同的应用程序,它没有任何问题。但是,这里的自定义烤面包片不会显示。我在2.2自定义ROM和4.2(谷歌版)上测试了它。
我发现关于这个主题的唯一问题是这个Holo Colors on pre Holo Devices?并且它没有处理自定义样式(并且问题不会在“holo设备”上重现,与我的情况不同)。
有谁知道为什么这四种风格显示为灰色?
编辑:我刚刚测试过,像Style.ALERT这样的常规(内置)样式会显示正确的颜色...... 此外,我将R.color.mycolor中的颜色引用更改为它们在R中的值(例如:0x7f06000c),因为这是Crouton库中的原始Style类所做的,并且仍然是相同的半透明灰色...... 我还检查了原始的holo_red_light以检查alfa值并将它们添加到我的自定义颜色
<color name="verde_lima">#FFaaee22</color>
<color name="rojo_vivo">#FFE8110F</color>
<color name="naranja_resplandeciente">#FFFF6600</color>
<color name="amarillo_canario">#FFFFCC00</color>
但仍然没有。
答案 0 :(得分:3)
您正在使用期望实际颜色值的方法setBackgroundColorValue(...)
。
但是您正在为此方法提供资源ID。
您可能希望调用setBackgroundColor(int resId)
来解析内部的资源ID。