我正在尝试以编程方式在ListView适配器中设置自定义背景颜色,但我想保留Android的默认Listview选择器样式。
我使用项目视图的“SetBacgroundResource”方法设置背景颜色。
我正在使用Android 4.0,我尝试了此博客http://daniel-codes.blogspot.co.nz/2010/07/how-to-change-listview-rows-background.html中的示例,但使用此示例时,选择器显示未显示未选择的背景颜色。
如何在Android 4.0 ICS中实现这一目标?
编辑:这是我用于列表项背景drawable的资源。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_selected="true" android:drawable="@android:color/transparent" />
<item android:state_selected="true" android:drawable="@android:color/transparent" />
<item android:state_pressed="true" android:state_selected="false" android:drawable="@android:color/transparent" />
<item android:state_selected="false" android:drawable="@color/list_item_first" />
</selector>
我用来设置此背景drawable的代码位于我的adatapter的GetView方法中。代码是:
convertView.setBackgroundResrouce(R.drawable.list_item_dark);
答案 0 :(得分:4)
您是否尝试将ListView
的属性android:drawSelectorOnTop设置为true?
您可以为项目设置背景,并在按下时查看突出显示的项目。
答案 1 :(得分:3)
试试这个:
行布局中的设置
的背景属性android:background="@drawable/your_selector"
和您的listView
设置
android:listSelector="@drawable/your_selector"
答案 2 :(得分:3)
尝试编写自定义适配器并像这样设置rowView BackgroundColor(如果位置奇数BLACK,甚至是RED)。 您也可以向适配器发送颜色列表,并为每个rowView设置不同的颜色
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
enter code here
if(rowView == null)
{
if((position % 2)==1){
rowView.setBackgroundColor(Color.BLACK)
//colorList :setBackgroundColor( colorList.get(position) )
}
else{
rowView.setBackgroundColor(Color.RED)
}
}
return rowView;
}
答案 3 :(得分:1)
尝试将此样式应用于ListView:
<style name="List">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:background">#FFFFFF</item>
<item name="android:dividerHeight">1dp</item>
<item name="android:divider">#CCCCCC</item>
<item name="android:cacheColorHint">#FFFFFF</item>
<item name="android:listSelector">#00000000</item>
</style>
在你的xml布局中:
<ListView
android:id="@+id/listView"
style="@style/List"
android:paddingTop="1dp"/>