在列表视图中设置项目的背景

时间:2012-04-13 02:15:52

标签: android listview

我正在使用android中的列表视图。 我想为列表视图中的每个项目设置背景颜色。

如果我使用setbackgroudcolor函数,它会显示不正确的颜色。似乎有应用背景和新颜色的混合颜色。 如果我使用setbackgroundresource基金,它显示确定。但是,当我点击某个项目时,颜色不会改变。

我需要为列表视图中的每个项目设置背景,当点击某个项目时,背景会更改为其他颜色或背景

我的代码:OnView

    // Set background
    RelativeLayout root = (RelativeLayout) vi.findViewById(R.id.p60001_layout_info);
    if (position % 2 == 0){
        root.setBackgroundResource(R.drawable.cell_g_02);
        //root.setBackgroundColor(R.color.color_fist_in_pack_view);
    }else{
        root.setBackgroundResource(R.drawable.cell_g_01);
        //root.setBackgroundColor(R.color.color_fist_in_pack_view);
    }

行布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/p60001_layout_info"
android:layout_width="match_parent"
android:layout_height="30dp">

<TextView
    android:id="@+id/p60001_item_info"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:textSize="15dp" android:layout_marginLeft="10dp" android:fadeScrollbars="false" android:textColor="@color/txt_normal" android:scrollHorizontally="true" android:gravity="center_vertical">
</TextView>

<ImageView
    android:id="@+id/icon"
    android:layout_width="22px"
    android:layout_height="30dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:src="@drawable/arrow" android:layout_marginRight="15dp"/>

<ImageView
    android:id="@+id/p60001_image_notice_num"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:layout_alignParentTop="true"
    android:layout_marginRight="30dp"
    android:layout_toLeftOf="@+id/icon"
    android:layout_marginTop="5dp" android:src="@drawable/fukidashi" android:visibility="invisible" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" android:longClickable="false"/>

<TextView
    android:id="@+id/p60001_item_notices"
    android:layout_width="10dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/icon"
    android:ems="10" android:layout_marginRight="40dp" android:background="@android:color/transparent" android:freezesText="false" android:focusableInTouchMode="false" android:focusable="false" android:clickable="false" android:selectAllOnFocus="false" android:textSize="20px" android:layout_marginTop="4dp" android:visibility="invisible">

    <requestFocus />
</TextView>

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

如果您使用自定义适配器概念,则上面是您的getView代码。

你必须转换视图(每行的xml文件)改变它的背景,如下所示。

if (position % 2 == 0){
    converterView.setBackgroundResource(R.drawable.cell_g_02);
    //root.setBackgroundColor(R.color.color_fist_in_pack_view);
}else{
    converterView.setBackgroundResource(R.drawable.cell_g_01);
    //root.setBackgroundColor(R.color.color_fist_in_pack_view);
}

如果您需要更改焦点上的颜色或按下,请使用以下xml作为背景。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" 
        android:drawable="@color/red" />
    <item android:state_selected="true" 
        android:drawable="@color/red" />
</selector>

如果需要为点击的项目设置背景,那么执行此操作的方法是::::

在你的pojo(bean)中有一个bool变量(= false),你要存储每个项目的数据。 因此,当您点击项目时,将该变量设为true。在getView()中只需检查该变量是真还是假,并相应地满足需要。

答案 1 :(得分:1)

试试这个

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use selected state color -->
    <item android:drawable="@drawable/your_drawable_when_selected"
          android:state_selected="true" />
    <!-- When not selected, use default item color-->
    <item android:drawable="@drawable/your_drawable_when_unselected" />
</selector>