【发布时间】:2014-07-08 00:25:22
【问题描述】:
我遇到了一个非常奇怪的问题,可能是一个错误。我有一个可绘制资源,用作应用程序中按钮的背景。这是 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 通道完全消失了一样。
无论如何,我不知道为什么会发生这种情况,因此我认为这可能是一个错误。大家觉得呢?
编辑:问题仅在设置颜色过滤器时出现。如果我注释掉那条线,它就可以正常工作(当然,减去我需要的颜色)。
【问题讨论】:
-
你调试过看“foreground”的值吗?如果在 sharedPreferences 中没有找到它,它将返回 0,即透明黑色。但我不确定使用 Mutiply 混合的透明度如何表现
-
"foreground" 是案例中的红色。我没有弄乱背景颜色;它应该是透明的。它应该适用于乘法混合,或者至少它在今天早些时候可以正常工作。
标签: android xml android-drawable