我创建了一个自定义列表,并设法在正常和单击的视图中更改子项的颜色。但是当我将它应用到焦点视图时,没有任何反应,默认的背景颜色仅显示文本的颜色从白色变为黑色。以下是我目前使用的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>
请关注如何在关注子项目时更改列表视图的子项目的颜色...
答案 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);
即可更改商品的颜色。