Android:按钮背景XML在设置滤镜时有时会丢失alpha

时间:2014-07-05 00:21:13

标签: android xml android-drawable

我遇到了一个非常奇怪的问题,可能是一个bug。我有一个可绘制的资源,我用作我的应用程序中按钮的背景。这是XML,非常简单:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:color="@color/white"
        android:width="5dp" />
    <padding
        android:left="10dp"
        android:right="10dp" />
    <corners android:radius="8dp" />
</shape>

我正在尝试让用户同时设置应用的前景色和背景色,这就是我更新颜色的方式:

int foreground = getSharedPreferences("prefs", MODE_PRIVATE).getInt("foreground", 0);
_buttonOptions.setTextColor(foreground);
_buttonOptions.getBackground().setColorFilter(foreground, PorterDuff.Mode.MULTIPLY);

直到几个小时前,它才能完美运行。当我运行我的应用程序时,drawable给自己一个黑色的背景,我似乎无法摆脱它。

drawable

我已经尝试了所有我能想到的东西,但是黑色停留了。我甚至没有做任何可能导致这种情况发生的事情;我在改变时所做的唯一一件事就是将按钮的文字样式设置为粗体。我试着把它改回来,但那没有用。有趣的是,我也尝试将滤色器模式更改为SRC_ATOP,并为整个按钮区域着色。所以好像alpha通道已经完全消失了。

无论如何,我不知道为什么会发生这种情况,因此我认为这可能是一个错误。你们觉得怎么样?

编辑:问题仅在设置滤色器时出现。如果我评论该行,它工作正常(当然,减去我需要的颜色)。

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了这个问题。我必须向drawable明确添加透明背景,然后清理项目。所以XML现在看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/transparent" />
    <stroke
        android:color="@color/white"
        android:width="5dp" />
    <padding
        android:left="10dp"
        android:right="10dp" />
    <corners android:radius="8dp" />
</shape>

我之前尝试过这个,但它没有做任何事情,因为我没有清理项目,所以我认为它根本没用。