3

我正在寻找一个导航抽屉选择器,它在抽屉打开时始终显示当前选定的项目,即使在抽屉关闭时也会保留。像这样的东西:

在此处输入图像描述

我使用过类似的东西,但它只在我单击列表项时显示选择器。这是在我的 res 文件夹中:

<?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>

我如何实现上面显示的实现?我需要实现哪个状态?谢谢

4

2 回答 2

1

通过在填充我在 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;
    }
于 2013-10-25T09:38:04.297 回答
0

还有另一种状态,"android:state_selected",您必须使用。为列表项的背景使用可绘制状态,并为列表的 listSelector 使用不同的可绘制状态:

list_row_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>

listitem_background.xml:

<?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>

layout.xml包括ListView

...
<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:listSelector="@drawable/listitem_selector"
   />
...

listitem_selector.xml:

<?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>
于 2013-10-12T06:04:57.023 回答