2011-12-15 9 views
7

ListViewアイテムのもう一つの強調表示色を設定する必要があります。私はアイテムのためのカスタム・アダプターを使用して、私は次のコードしている:ListViewアイテムのハイライトカラーを設定する方法は?

レイアウト:アイテムレイアウトの

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:weightSum="1.0" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.13" 
     android:background="@drawable/booklist_header" 
     android:orientation="horizontal" 
     android:layout_height="0dp" > 

     <ImageView 
      android:id="@+id/imageViewBookListBack" 
      android:layout_width="wrap_content" 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:src="@drawable/back_button" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.77" 
     android:layout_height="0dp" > 

     <ListView 
      android:id="@+id/listViewCurrentList" 
      android:listSelector="@drawable/selector" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
     </ListView> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutBooklistAdwhirl" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.1" 
     android:layout_height="0dp" > 
    </LinearLayout> 

</LinearLayout> 

コード:セレクタの

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/imageViewBookListItemImage" 
     android:layout_width="120dp" 
     android:layout_marginTop="15dp" 
     android:layout_height="120dp" /> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="135dp" 
     android:layout_marginTop="15dp" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textViewBookListItemTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Medium Text" 
      android:textColor="#000000" 
      android:textStyle="bold" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <TextView 
      android:id="@+id/textViewBookListItemAuthor" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Medium Text" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

    </LinearLayout> 

</LinearLayout> 

コード:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@color/green" /> <!-- focused --> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/green" /> <!-- focused and pressed--> 
    <item android:state_pressed="true" android:drawable="@color/green" /> <!-- pressed --> 
    <item android:drawable="@color/green" /> <!-- default --> 
</selector> 

コードfor color.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="green">#006400</color> 
    <color name="white">#FFFFFF</color> 


</resources> 

しかし、私は問題があります:リストビューの項目は、クリックすると色が変わりません!それは常に白い色をしています。私はどこで間違えたのですか?

答えて

23

これは、あなたがそれを行う方法です。

まず、あなたのListViewで、次のように置く:

android:listSelector="#00000000" 

これはあなたのlistSelector(あなたはリストビューをクリックしたときには、通常、参照色)が透明になります。

次に、これにあなたの項目のレイアウトのLinearLayoutを設定します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/selector" 
    android:orientation="horizontal" > 

を私は数日前に同じ問題を抱えていたし、それがこれを理解するために私の年齢を取りました。うまくいけばそれはあなたのために働く!

+1

ありがとうございました! – user1078760

+4

'android:background'を含む2行があります。正してください –

2

これを追加しようとすることができます:android:drawSelectorOnTop = "true"をListViewの定義に追加します。

これがあなたを手伝ってくれることを願っています!

P.S.メインレイアウトを最適化し、不要なレイアウトを削除することができます。これにはlayoutoptを使用することができます。

+0

ありがとうございます。しかし、今、私は全体のListViewよりもアイテムをクリックすると、緑の色を変更しますが、私は1つだけのアイテムが必要です。どうすれば修正できますか? – user1078760

+0

えええええええええええええええええええええええええええええええええ、この問題では、解決方法をここで確認できます:http://stackoverflow.com/questions/2562051/listview-item-background-via-custom-selector私はまた、できるだけ早くあなたに確認し、あなたに戻ってきます。 –

関連する問題