我正在使用以下功能来启用和禁用drawables ......
public static void setDrawableState(Drawable d, boolean enabled)
{
if (d == null)
return;
d.mutate(); // so drawables don't share state anymore
if (enabled)
d.setAlpha(255);
else
d.setAlpha(100);
}
这适用于我尝试过的所有手机,现在我发现它似乎不适用于Android 4.4.2(也许它甚至不是版本特定的。)
是否有另一种(更好的)方法来设置drawable的alpha?或者我错过了什么?
答案 0 :(得分:3)
因为drawable可能共享相同的状态,所以更改drawable状态将不起任何作用。您需要改变drawable,例如在您的代码中,尝试类似:
d.mutate().setAlpha(100);
Android developer Blogs有一篇很棒的博文,解释了有关可绘制状态和突变的更多信息。
答案 1 :(得分:0)
如果您想要确定:
Drawable d2 = d.getConstantState().newDrawable().mutate();
d2.setAlpha(100)