我有一个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);
这是结果:
mainColor绝对是蓝色而不是绿色(#4CAEE3) 我做错了什么,不知道是什么。将提供任何帮助。提前致谢
答案 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>
试试这个。它可能对你有帮助。