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()で、その変数がtrueかfalseかを確認し、それに応じて必要性を完全に実行します。

于 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 に答える