Drawable setAlpha不能在android 4.4.2上运行

时间:2014-10-25 13:51:39

标签: android drawable alpha

我正在使用以下功能来启用和禁用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?或者我错过了什么?

2 个答案:

答案 0 :(得分:3)

因为drawable可能共享相同的状态,所以更改drawable状态将不起任何作用。您需要改变drawable,例如在您的代码中,尝试类似:

d.mutate().setAlpha(100);

Android developer Blogs有一篇很棒的博文,解释了有关可绘制状态和突变的更多信息。

答案 1 :(得分:0)

如果您想要确定:

Drawable d2 = d.getConstantState().newDrawable().mutate();
d2.setAlpha(100)