2012-04-13 9 views
1

私はアンドロイドのリストビューで作業しています。 リストビューで各項目の背景色を設定したいと思います。リストビューでアイテムの背景を設定する

setbackgroudcolor関数を使用すると、不正な色が表示されます。アプリケーションの背景と新しい色のミックスカラーがあるようです。 setbackgroundresourceファンドを使用すると、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); 
    } 

行レイアウト:項目をクリックし、背景は他の色や背景

私のコードに変更されたときに

iは、リストビューの各項目のための背景を設定する必要があり、かつ:

<?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> 
+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を背景として使用する場合は、このボタンを押してください。あなたが保存しているあなたのPOJO(豆)で

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

クリック項目の背景を設定する必要がこれを行う方法は、(偽=)ブール変数を持っている::::

ある場合各項目のデータ これで項目をクリックするとその変数をtrueにします。 getView()では、その変数が真か偽かをチェックして、それに応じて必要なだけを行います。

+1

を使用していますか?つまり、ルートがconvertViewの場合はどうですか? – Cristian

+0

はい、私はカスタムアダプターを使用し、getView関数を編集します。 私はあなたの提案を働いた、しかし、アイテムをクリックすると、アイテムの色を変更することはできません。アイテムをクリックするときに実装する必要がありますか? – Ankata

+0

あなたのセレクタを試して、リストビューの背景として設定しましたが、アイテムをクリックすると小さな赤い線だけが表示されます。現在のバックグラウンドリソースは重複しているようです。 – Ankata

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> 
関連する問題