Android - 通过选择器在ListView中选定项目的背景颜色

时间:2017-10-03 12:51:49

标签: android listview

我有一个ListView并且在DrawerLayout中并且背景通过选择器应用,我已经为所选项目指定了背景颜色但是没有应用该颜色,绿色(不知道它来自哪里,它不是在我的colors.xml或任何地方)

这就是我所拥有的

menuitem_style.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_selected="true"
    android:drawable="@color/mainColor"/>
<!--mainColor is #4CAEE3-->
<item
    android:drawable="@android:color/white" />

ListView:

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@drawable/menuitem_style"
    android:choiceMode="singleChoice"
    android:divider="@android:color/white"
    android:dividerHeight="1dp"
    android:paddingTop="10dp" />

相关的Java代码

 mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);

这是结果:

enter image description here

mainColor绝对是蓝色而不是绿色(#4CAEE3) 我做错了什么,不知道是什么。将提供任何帮助。提前致谢

3 个答案:

答案 0 :(得分:1)

请记住在列表视图和recyclerview中回收视图的概念。

您可以跟踪当前所选元素的位置:

 OnItemClickListener listViewOnItemClick = new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
                mSelectedItem = position;
                mAdapter.notifyDataSetChanged();
        }
    };

并覆盖适配器的getView方法:

   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final View view = View.inflate(context, R.layout.item_list, null);

        if (position == mSelectedItem) {
            // set your color
        }

        return view;
    }

对我来说,这就是诀窍。

答案 1 :(得分:0)

将此背景用作textview背景而非listview背景。转到用于列表视图填充的行xml文件,并在那里设置背景。希望对你有帮助。

答案 2 :(得分:0)

   android:listSelector="@drawable/listitem_selector"

  <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="false" android:drawable="@color/black"/>
        <item android:state_enabled="true" android:drawable="@color/gray"/>
    </selector>

试试这个。它可能对你有帮助。