Android - 在抽屉中选中的列表项未更改颜色
Android - List item checked in Drawer not changing color
在为项目设计抽屉样式时,我为我的抽屉创建了以下监听器内部 class:
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
switch(position) {
case 0:
Toast.makeText(MainActivity.this, "Item 1 clicked", Toast.LENGTH_SHORT)
.show();
Log.i(TAG, "Item 1 clicked.");
//Highlight the selected item
mDrawerList.setItemChecked(position, true);
//And close the drawer on click
mDrawerLayout.closeDrawer(mDrawerList);
break;
case 1:
(...)
在 class 中进一步分配:
// Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mItems));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
奇怪的是这不起作用。列表项永远不会改变颜色。我什至尝试不调用 closeDrawer()
并检查项目的颜色是否改变。 MainActivity 布局 xml 中的抽屉位看起来不错(我尝试使用和不使用 listSelector):
<ListView
android:id="@+id/left_drawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@android:color/white"
android:listSelector="@drawable/abc_list_selector_holo_light"/>
我的自定义列表项也是如此:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@android:dimen/app_icon_size"
android:textSize="@dimen/abc_text_size_large_material">
</TextView>
这一切都遵循 Android 开发者网站上导航抽屉的指南和教程:Creating a Navigation Drawer | Android Developers
使用选择器作为textview的背景
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@android:dimen/app_icon_size"
android:textSize="@dimen/abc_text_size_large_material"
android:background="@drawable/abc_list_selector_holo_light" >
</TextView>
我会post这个布局的代码,根据你的需要更改。
在为项目设计抽屉样式时,我为我的抽屉创建了以下监听器内部 class:
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
switch(position) {
case 0:
Toast.makeText(MainActivity.this, "Item 1 clicked", Toast.LENGTH_SHORT)
.show();
Log.i(TAG, "Item 1 clicked.");
//Highlight the selected item
mDrawerList.setItemChecked(position, true);
//And close the drawer on click
mDrawerLayout.closeDrawer(mDrawerList);
break;
case 1:
(...)
在 class 中进一步分配:
// Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mItems));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
奇怪的是这不起作用。列表项永远不会改变颜色。我什至尝试不调用 closeDrawer()
并检查项目的颜色是否改变。 MainActivity 布局 xml 中的抽屉位看起来不错(我尝试使用和不使用 listSelector):
<ListView
android:id="@+id/left_drawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="@android:color/white"
android:listSelector="@drawable/abc_list_selector_holo_light"/>
我的自定义列表项也是如此:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@android:dimen/app_icon_size"
android:textSize="@dimen/abc_text_size_large_material">
</TextView>
这一切都遵循 Android 开发者网站上导航抽屉的指南和教程:Creating a Navigation Drawer | Android Developers
使用选择器作为textview的背景
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@android:dimen/app_icon_size"
android:textSize="@dimen/abc_text_size_large_material"
android:background="@drawable/abc_list_selector_holo_light" >
</TextView>
我会post这个布局的代码,根据你的需要更改。