2011-12-15 84 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> 

但我有一个问题:ListView项目不会通过点击更改颜色!它总是有白色的。我犯了什么错误?

回答

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

我前几天有同样的问题,我花了年龄摸不着头脑。希望它适合你!

2

你可以尝试添加:android:drawSelectorOnTop =“true”来定义ListView。

希望这会帮助你!

P.S.您可以优化主布局并删除不必要的布局。你可以使用layoutopt来做到这一点。

+0

谢谢。但现在当我点击该项目比整个ListView更改颜色为绿色,但我只需要1个项目。我该如何解决它? – user1078760 2011-12-15 15:59:54

+0

嗯,对于这个问题,你可以在这里检查一个解决方案:http://stackoverflow.com/questions/2562051/listview-item-background-via-custom-selector。我也会尽快核对并回复你。 – 2011-12-15 16:03:37