Android 如何实现类似Google Play Music的导航抽屉选择器
我希望实现一个导航抽屉选择器,它在抽屉打开时始终显示当前选定的项目,即使在抽屉关闭时也会保留该选项。大概是这样的: 我使用过类似的东西,但它只在我单击列表项时显示选择器。这在我的res文件夹中:Android 如何实现类似Google Play Music的导航抽屉选择器,android,android-selector,android-navigation,Android,Android Selector,Android Navigation,我希望实现一个导航抽屉选择器,它在抽屉打开时始终显示当前选定的项目,即使在抽屉关闭时也会保留该选项。大概是这样的: 我使用过类似的东西,但它只在我单击列表项时显示选择器。这在我的res文件夹中: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pre
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/list_activated_holo" />
</selector>
如何实现上述实现?需要实现哪个状态?谢谢还有另一个状态,
“android:state\u selected”
,您必须使用它。在列表项的背景中使用可绘制状态,并在列表的listSelector中使用不同的可绘制状态:
list\u row\u layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/listitem_background"
>
...
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/android:transparent" />
<item android:drawable="@drawable/listitem_normal" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/listitem_pressed" />
<item android:state_focused="true" android:drawable="@drawable/listitem_selected" />
</selector>
listitem\u selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/listitem_background"
>
...
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/android:transparent" />
<item android:drawable="@drawable/listitem_normal" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/listitem_pressed" />
<item android:state_focused="true" android:drawable="@drawable/listitem_selected" />
</selector>
通过在填充NavigationDrawer中我的列表的ArrayAdapter的getView()中设置颜色,解决了相同的问题:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getActivity()).inflate(
R.layout.side_menu_list_item,
parent,
false);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.text1);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mCurrentSelectedPosition == position) {
holder.title.setBackgroundResource(R.color.menu_list_separator_line);
} else {
holder.title.setBackgroundResource(R.color.app_background_light);
}
holder.title.setText(menuItems[position]);
return convertView;
}
以下是您的答案:这是您为3项实现的
列表视图吗?请查看我的答案,它可能会对您有所帮助。因此,在这种情况下,灰色背景将位于列表项下。\u正常?那么按下并聚焦呢?现在我使用的是selected,它们还会被使用吗?不会,它只会用于所选项目。所以我根本不需要使用listitem_selector.xml?我对要使用的抽绳有点困惑。灰色表示所选项目的状态是否正确?是,表示所选项目。否。我仍然面临同样的问题。列表项未持续高亮显示此处定义的mcurrentselectedposition在哪里?它的用途是什么?mCurrentSelectedPosition-填充导航抽屉的是ListView当前选定项的int值。实现NavigationDrawer最简单的方法是使用Android Studio预定义的项目导航模板。