Android - 在抽屉中检查列表项而不更改颜色

时间:2015-03-21 23:58:26

标签: android android-layout android-fragments navigation-drawer onitemclicklistener

在为项目做抽屉样式加注时,我为抽屉创建了以下监听器内部类:

 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:
            (...)

在课堂上进一步分配:

 // 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中的Drawer位似乎很好(我尝试使用和不使用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

2 个答案:

答案 0 :(得分:1)

使用选择器作为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> 

答案 1 :(得分:1)

我将发布此布局的代码,根据您的需要进行更改。 enter image description here