Java ListView无法设置选定的背景颜色
我试图在选择时更改列表视图项的背景色 在主要活动中:Java ListView无法设置选定的背景颜色,java,android,listview,android-5.0-lollipop,Java,Android,Listview,Android 5.0 Lollipop,我试图在选择时更改列表视图项的背景色 在主要活动中: leftDrawerList = (ListView) findViewById(R.id.left_drawer); navDrawerItems = new ArrayList<NavDrawerItem>(); // adding nav drawer items to array navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMe
leftDrawerList = (ListView) findViewById(R.id.left_drawer);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1), true, "99+"));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons.getResourceId(7, -1)));
// Recycle the typed array
navMenuIcons.recycle();
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),navDrawerItems);
leftDrawerList.setAdapter(adapter);
leftDrawerList.setOnItemClickListener(new SlideMenuClickListener());
leftDrawerList.setItemChecked(0, true);
toolbar = (Toolbar) findViewById(R.id.toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
我的选择器xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/list_item_bg_normal" android:state_activated="false"/>
<item android:drawable="@drawable/list_item_bg_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/list_item_bg_pressed" android:state_activated="true"/>
</selector>
我的主要活动布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<include layout="@layout/toolbar" />
<android.support.v4.widget.DrawerLayout
android:layout_width="match_parent"
android:id="@+id/drawerLayout"
android:layout_height="match_parent">
<!-- activity view -->
<RelativeLayout
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent">
<TextView
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:textColor="#000"
android:text="Activity Content"
android:layout_height="wrap_content" />
</RelativeLayout>
<!-- navigation drawer -->
<RelativeLayout
android:layout_gravity="left|start"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent">
<ListView
android:id="@+id/left_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#FFFFFFFF"
android:background="#FFFFFFFF"
android:listSelector="@drawable/list_selector"
android:dividerHeight="0dp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
我的列表项xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp">
然而,不知何故,颜色在选择物品时不会改变
我已确保正确定义了我的颜色。请尝试为您的ListView设置android:drawSelectorOnTop=true。像这样:
<ListView
android:id="@+id/left_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#FFFFFFFF"
android:background="#FFFFFFFF"
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
android:dividerHeight="0dp" />
您从未在click listener中设置颜色。选择器XML不完整,因为这是您的问题所在,您可能需要编辑问题并提供完整的选择器。还有,为什么要在listSelector和RelativeLayout后台都使用这个呢?我更新了代码。同时执行列表选择器和列表项的相对布局背景是否多余?请在选择器中检查项目的顺序。android:state\u activated应该在android:state\u pressedI下面更新代码-我修复了遗漏部分XML的格式问题。同时执行列表选择器和列表项的相对布局背景是否冗余?-如果您试图使用激活状态,则该状态将位于行背景上。列表选择器用于在D-pad、轨迹球和箭头键上向上/向下按选择事件。等除此之外,我同意zzy的观点,您的activated=true需要出现在默认值之前,即当前的第一个条目。
<ListView
android:id="@+id/left_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#FFFFFFFF"
android:background="#FFFFFFFF"
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
android:dividerHeight="0dp" />