我遇到了一个非常奇怪的问题,可能是一个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给自己一个黑色的背景,我似乎无法摆脱它。
我已经尝试了所有我能想到的东西,但是黑色停留了。我甚至没有做任何可能导致这种情况发生的事情;我在改变时所做的唯一一件事就是将按钮的文字样式设置为粗体。我试着把它改回来,但那没有用。有趣的是,我也尝试将滤色器模式更改为SRC_ATOP,并为整个按钮区域着色。所以好像alpha通道已经完全消失了。
无论如何,我不知道为什么会发生这种情况,因此我认为这可能是一个错误。你们觉得怎么样?
编辑:问题仅在设置滤色器时出现。如果我评论该行,它工作正常(当然,减去我需要的颜色)。
答案 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>
我之前尝试过这个,但它没有做任何事情,因为我没有清理项目,所以我认为它根本没用。