我有一个电子商务应用程序,为此我设计了一个颜色选择件。我使用自定义 RadioButton 和 RadioGroup 来选择一种颜色。我从服务器下载可能的颜色样本并绘制每个按钮的背景。
问题在于,对于深色,底层图像会渗出,并且在边缘周围可以看到一条微弱的线条。
它看起来像这样:
我用这个 XML 文件定义了我的自定义按钮:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"
android:drawable="@drawable/color_radio_unselected" />
<item android:state_checked="true"
android:drawable="@drawable/color_radio_selected"/>
</selector>
其中两部分是:
然后我以编程方式在 Java 中绘制背景,如下所示:
color = new RadioButton[MAX_COLORS];
color[0]= (RadioButton)findViewById(R.id.color0);
color[1] = (RadioButton)findViewById(R.id.color1);
color[2] = (RadioButton)findViewById(R.id.color2);
color[3] = (RadioButton)findViewById(R.id.color3);
color[4] = (RadioButton)findViewById(R.id.color4);
<snip>
Drawable d = new BitmapDrawable(getResources(),productDetails.colorSwatchBM.get(thisColor));
if (sdkVersion < 16) {
color[i].setBackgroundDrawable(d);
}
else {
color[i].setBackground(d);
}
我从服务器获得的颜色样本只有 27x27 像素,而单选按钮图像,在 Android 将它们缩放后,约为 53x53。看起来它正在将背景缩放到与按钮相同的大小,但随后颜色被混叠在一起
有人知道如何使边缘不那么明显吗?
谢谢!