ListView项目背景问题

时间:2013-05-29 06:59:44

标签: android listview

我遇到了ListView项目的问题。我正在使用listSelector。 按下时我需要更改项目背景。但是当我按下它时,所有项目都会改变背景。它出现在Android 2.3.6上。 4.0.3以上它运行良好。

ListSelector

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/defaultSelector">
<item android:drawable="@color/defaultDashboardItemBackground" android:state_enabled="false" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@color/defaultDashboardItemHover" android:state_pressed="true"/>
<item android:drawable="@color/defaultDashboardItemBackground" android:state_focused="true" android:state_pressed="false"/>

一些代码

ListView list = (ListView) act.findViewById(R.id.menu_listview);
list.setBackgroundColor(act.getResources().getColor(getThemeBackground(theme)));
list.setSelector(act.getResources().getDrawable( getThemeSelector(theme)));
list.addHeaderView(createHeader("HEADER"));
list.setAdapter(adap);

3 个答案:

答案 0 :(得分:1)

这对我有用

<ListView
    android:id="@+id/playList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:listSelector="@android:color/holo_orange_light"
    android:cacheColorHint="#00000000"
    >

</ListView>

在onItemClickListener添加事件中

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            parent.setSelection(position);

希望这会对您有所帮助。

答案 1 :(得分:0)

将此属性设置为listview android:cacheColorHint="@null" 这可能有助于解决它。

答案 2 :(得分:0)

 <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:cacheColorHint="#00000000"
    android:listSelector="#00000000"
    android:fadingEdge="none"/>

并且不要在ListView中定义背景颜色。 在listitem.xml根布局中定义背景颜色(选择器)或图像(选择器)。

希望这会对你有所帮助。