更改焦点上自定义列表视图项的颜色

时间:2011-02-16 10:36:09

标签: android listview colors focus

我创建了一个自定义列表,并设法在正常和单击的视图中更改子项的颜色。但是当我将它应用到焦点视图时,没有任何反应,默认的背景颜色仅显示文本的颜色从白色变为黑色。以下是我目前使用的xml文件。

listview(listview.xml)的布局

    <?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="wrap_content"
    android:orientation="horizontal" android:padding="18sp"
    android:background="@drawable/backgroundselector">
    <ImageView android:id="@+id/imageView1"
        android:layout_height="fill_parent" android:layout_gravity="center_vertical"
        android:layout_width="wrap_content" />
    <TextView android:text="TextView" android:id="@+id/textView1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:paddingLeft="10sp" android:textSize="20sp" />
</LinearLayout>

clicked.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ffc61212" />
 </shape>

focussed.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ff26e0d7" />
 </shape>

normal.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ff0a4d66" />
 </shape>

最后是backgroundselector.xml

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

请关注如何在关注子项目时更改列表视图的子项目的颜色...

1 个答案:

答案 0 :(得分:0)

我的建议是覆盖ListView.onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)方法,该方法会在点击某个项目时调用。

在此方法中,您可以创建一个新的ArrayAdapter。像这样: ArrayAdapter<String> adpater=new ArrayAdapter<String>(CurrentActivity.this,R.layout.foucs,data);其中data是用于为ListView提供数据的对象数组(通常,我们使用String []或ArrayList类。)

然后,请致电ListView.setAdapter(adapter)以显示您的新风格。

希望它有所帮助。我是一个贪婪的人:)

啊,我找到了一种新的方便的方法。

ListView.onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)方法中, 只需拨打arg1.setBackgroundColor(newColor);即可更改商品的颜色。