1

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

如果我使用 setbackgroudcolor 函数,它会显示不正确的颜色。似乎有应用程序背景和新颜色的混合颜色。如果我使用 setbackgroundresource fund,它会显示 ok。但是,当我单击一个项目时,颜色不会改变。

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

我的代码: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>
4

2 回答 2

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() 中,只需检查该变量是真还是假,并相应地完成需求。

于 2012-04-13T02:19:16.643 回答
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>
于 2012-04-13T05:16:48.237 回答