如何在android中的每个可展开列表视图项的右侧添加菜单选项?

时间:2016-01-04 12:09:51

标签: android expandablelistview

喜欢" Messenger"应用程序,右侧的每个列表视图项都有一个选项菜单。但我想将选项菜单添加到每个可展开列表视图项的右侧。我到处搜索和谷歌搜索,但我没有找到任何解决方案。任何形式的帮助将受到高度赞赏。提前谢谢。

信使:

**Messenger**

activity_category_list.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#009999"
tools:context="com.remindme.sayem.remindme.CategoryList"
>

<ExpandableListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/categoryListView"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:dividerHeight="0.5dp"
    android:divider="#ffffff"

    />
</RelativeLayout>

categoyry_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:background="#009999"
>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textAllCaps="false"
    android:textColor="#ffffff"

    android:text="Large Text"
    android:paddingLeft="30dp"
    android:id="@+id/categoryItem" />
</LinearLayout>

item_name.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="#FFFFFF"
>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="40dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textAllCaps="false"
    android:layout_marginLeft="5dp"
    android:numeric="decimal"
    android:textColor="#000000"
    android:text="Medium Text"
    android:id="@+id/itemName" />
</LinearLayout>

category_item_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
>



<item
    android:title="menus"
    android:id="@+id/menus"
    app:showAsAction="always"
    android:icon="@drawable/ic_action_settings"
    >
    <item
        android:title="Edit"
        android:id="@+id/editMenu"
        />
    <item
        android:title="Delete"
        android:id="@+id/deleteMenu"
        />

</item>

</menu>

1 个答案:

答案 0 :(得分:1)

使用PopupMenu

尝试使用此代码打开选项菜单
 private void showPickMenu(View anchor) {
        PopupMenu popupMenu = new PopupMenu(context, anchor);
        popupMenu.inflate(R.menu.new_menu);

        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.menu1
                    //do something here...    
                        break;
                    case R.id.menu2:

                        //do something
                        break;
                }
                return false;
            }
        });
        popupMenu.show();
    }

和你的R.menu.new_menu文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu1"
        android:title="@string/menu1"></item>

    <item
        android:id="@+id/menu2
        android:title="@string/menu2"></item>

</menu>

你必须点击你的视图来传递这个方法

showPickMenu(your_view);

修改

更改您的categoyry_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#009999"
    android:padding="15dp">

    <TextView
        android:id="@+id/categoryItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="Large Text"

        android:textAllCaps="false"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff" />

    <TextView
        android:id="@+id/tv_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:padding="10dp"
        android:text="@string/fa_ellipsis_v"
        android:textColor="#ffffff"
        android:textSize="20sp" />

</RelativeLayout>

@ string / fa_ellipsis_v 是一个非常棒的字体,你还必须使用imageview

并在您的java代码中使用此 tv_menu ID并传递给此方法showPickMenu(tv_menu)

并使用我的菜单xml文件