7

我正在尝试以编程方式在我的 ListView Adapter 中设置自定义背景颜色,但我想保留 Android 的默认 Listview Selector 样式。

我正在使用我的项目视图的“SetBacgroundResource”方法设置背景颜色。

我正在使用 Android 4.0,并尝试了此博客http://daniel-codes.blogspot.co.nz/2010/07/how-to-change-listview-rows-background.html中的示例,但使用此示例选择器显示,但是未显示未选择的背景颜色。

如何在 Android 4.0 ICS 中实现这一点?

编辑:这是我用于列表项背景可绘制的资源。

<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>

我用来设置此背景可绘制对象的代码位于我的 adatapter 的 GetView 方法中。代码是:

convertView.setBackgroundResrouce(R.drawable.list_item_dark);
4

4 回答 4

4

您是否尝试将您的属性android:drawSelectorOnTop设置ListView为 true ?
您将能够为您的项目设置背景,并在按下时看到突出显示的项目。

于 2012-11-10T20:45:50.087 回答
3

尝试编写您的自定义适配器并像这样设置 rowView BackgroundColor(如果位置奇数黑色,偶数红色)。您也可以将颜色列表发送到适配器并为每个 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;
        }
于 2012-11-09T17:32:39.387 回答
3

试试这个:

在您的行布局中设置背景属性

android:background="@drawable/your_selector"

和你的listView套装

android:listSelector="@drawable/your_selector"
于 2012-11-08T01:40:13.990 回答
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"/>
于 2012-11-13T20:42:11.833 回答