我正在尝试使用StateListDrawable和Drawable.setColorFilter(int颜色,模式模式)创建标签栏。我正在使用一张白色图像,并根据状态(按下,聚焦)更改颜色。
以下是代码段: -
private static StateListDrawable getStateList(int ID) {
int statePressed = android.R.attr.state_pressed;
int stateSelected = android.R.attr.state_selected;
StateListDrawable lStates = new StateListDrawable();
Resources lResources = UconnectAccessApp.aa().getResources();
Drawable lTabDisabled = lResources.getDrawable(ID).mutate();
lTabDisabled.setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
lStates.addState(new int[] {-statePressed,-stateSelected}, lTabDisabled);
Drawable lTabEnabled = lResources.getDrawable(ID).mutate();
lTabEnabled.setColorFilter(Color.GREEN, PorterDuff.Mode.MULTIPLY);
lStates.addState(new int[] {stateSelected}, lTabEnabled);
lStates.addState(new int[] {statePressed}, lTabEnabled);
return lStates;
}
一切都按预期工作,但仅适用于在Android 5.1上运行的Nexus 5,但不适用于其他设备(使用Android 4.1.2在Galaxy S 5上测试过)。
以后我会得到基本图像(白色),按下标签时颜色不会改变。
如果我遗漏了什么,请告诉我,为什么在不同的设备上有两种不同的行为。
感谢您的帮助。