0

我正在使用ListView我自己的BaseAdapter来呈现项目列表。可以突出显示一个项目。当我这样做时,我将背景设置为BaseAdapter

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

这很好用,除了View里面的 s convertView(有一些按钮可以编辑项目)似乎有点透明,即使getAlpha()return 1.0

当我明确设置 contains 的背景时Button,它会呈现我想要的锄头。如何“删除”这种类似 alpha 的行为?

我得到什么: 在此处输入图像描述

我想要的是: 在此处输入图像描述

4

1 回答 1

0

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

一种方法(尽管很乏味)是制作列表中每种样式(按钮、开关等)的自定义 drawables/xml,并将它们包含在您的项目中。

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

于 2013-05-22T18:21:33.903 回答