从ListView ConvertView中删除Alpha通道

时间:2013-05-22 15:30:08

标签: android listview

我正在使用ListView和我自己的BaseAdapter来呈现项目列表。可以高举一个项目。当我这样做时,我在BaseAdapter中设置背景,如下所示:

if (position == selectedItem) {
    convertView.setBackgroundResource(R.color.mylightcyan);
} else {
    convertView.setBackgroundResource(0);
}

这很有效,除了View内的convertView(有一些按钮来编辑项目)似乎有点透明,即使getAlpha()返回{ {1}}。

当我明确设置包含1.0的背景时,它会渲染我想要的锄头。如何“删除”这种类似alpha的行为?

我得到了什么: enter image description here

我想要的: enter image description here

1 个答案:

答案 0 :(得分:0)

这是因为android使用的* .9.png文件作为按钮的默认资源,它们具有透明性(按钮本身是半透明的)。因此,将alpha设置为0只会使其与原始图像本身一样不透明。

一种方式(尽管是tedius)将在列表中制作每种样式(按钮,开关等)的自定义drawables / xmls,并将其包含在项目中。

相反,您可以做一些hacky:将您的BaseAdapter的每个元素(即按钮,开关等)包裹在线性布局中,并将这些线性布局的背景设置为列表中的相同背景。这样,您的按钮后面会有一个不透明的背景,会掩盖高光颜色。