Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView无法设置选定的背景颜色_Java_Android_Listview_Android 5.0 Lollipop - Fatal编程技术网

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