2013-05-22 129 views
0

我正在使用ListView和我自己的BaseAdapter来呈现项目列表。可以将项目列入高位。当我这样做,我将在BaseAdapter这样的背景:从ListView中删除Alpha通道ConvertView

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

这个作品非常好,除了View S中convertView内(也有一些按钮编辑的项目),似乎是有点透明,即使getAlpha()返回1.0

当我明确设置包含的背景Button时,它呈现我想要的锄头。我怎样才能“移除”这种类似alpha的行为?

我得到什么: enter image description here

我想要什么: enter image description here

+0

它有可能从适配器有你的getView()方法?请使用xml布局发布它? – Jarvis

回答

0

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

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

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

+0

谢谢,即使我选择另一种解决方法,我也会接受。我只是在行中放置一个ImageView来表示它的激活。 –