Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drawable setAlpha不适用于android 4.4.2_Android_Drawable_Alpha - Fatal编程技术网

Drawable setAlpha不适用于android 4.4.2

Drawable setAlpha不适用于android 4.4.2,android,drawable,alpha,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.setA

我正在使用以下函数来启用和禁用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);
}
这在我尝试过的所有手机上都有效,现在我发现它在安卓4.4.2上似乎不起作用(可能甚至不是特定版本)


是否有其他(更好的)方法来设置可绘制图形的alpha?还是我遗漏了什么?

因为可绘制文件可能共享相同的状态,所以更改可绘制文件状态不会产生任何效果。您需要修改可绘制的图形,例如,在代码中,尝试以下操作:

d.mutate().setAlpha(100);

有一篇很好的博客文章,解释了更多关于可绘制状态和突变的信息。

如果你真的想确定:

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

d2.setAlpha(100)
它在旧版本上工作过吗?是的,非常好。。。在
图像按钮
菜单项
操作项
。。。只要我把它应用到绘图上,它就起作用了。。。我不知道它是否能在所有设备上运行,但在我的设备上运行过(HTC One Mini,4.4.3和4.3),我认为你的使用不正确。它返回可变实例。你能解释一下,你将如何解决这个问题吗?事实上,我只是在谷歌上搜索了一下,甚至发现了一个博客,上面解释了我的技术。。。我不知道。我从来没必要这么做。我只是在视图上设置alpha或设置enabled(false)实际上,这正是我所做的,并且在一些android版本上有效,但不是在所有版本上都有效。。。在我的代码中,我甚至注释了我调用
mutate
的那一行,并解释说,我这样做的原因与您提到的完全相同。。。