如何在Android中的特定位置打开上下文菜单而不是菜单对话框

时间:2015-08-28 12:05:04

标签: android android-listview android-contextmenu

如何在指定地点打开上下文菜单,如下图所示。该应用程序是doubleTwistPlayer - 请参阅Play Store

double twist list ellipsis

单击它本身打开上下文菜单,而不是上下文菜单对话框

on clicking the ellipsis, menu open here

已经尝试过了

menu_layout.xml

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

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


</menu>

list_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" >

<!-- <RelativeLayout  
    android:id="@+id/relUpperBody"
    android:background="@color/listViewTopContentBackground"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"> -->
<TextView
    android:id="@+id/txvLeaveName"
    style="@style/ListViewItemHeaderText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"        
    android:text="sdfsdfsd" />

<TextView
    android:id="@+id/txvBalanceLeave"
    style="@style/ListViewItemHeaderText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/imgLeaveAction"
    android:text="dsfgd" />
<!-- </RelativeLayout> -->

<TextView
    android:id="@+id/txvAllottedLbl"
    style="@style/ListViewItemTextSize"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/txvLeaveName"
    android:layout_marginTop="15dp"
    android:text="@string/allotted" />

<TextView
    android:id="@+id/txvAllottedLeave"
    style="@style/ListViewItemTextSize"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/txvBalanceLeave"
    android:layout_alignBaseline="@+id/txvAllottedLbl"
    android:text="sgsdg" />

<ImageView
    android:id="@+id/imgLeaveAction"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:src="@drawable/ellipsis_menu_overflow" />

<小时/> 的问题

  1. 如何实施?
  2. 是上下文菜单还是别的什么?

3 个答案:

答案 0 :(得分:2)

您需要使用PopupMenu

  

弹出式菜单
   弹出菜单显示垂直列表中的项目列表,该列表锚定到调用菜单的视图。这对你有好处   提供与特定内容相关的动作溢出或   为命令的第二部分提供选项。弹出窗口中的操作   菜单不应该直接影响相应的内容 - 这就是什么   上下文行为是为了。相反,弹出菜单用于扩展   与您活动中的内容区域相关的操作。

有关实施它的更多信息here

答案 1 :(得分:1)

我认为这是一个ListPopupWindow,您需要做的就是从列表适配器创建一个回调到您的片段/活动,并将回调中的单击视图作为参数传递,并使用ListPopupWindow将锚点设置为视图你已经通过,你可以创建自己的自定义适配器并将其设置为ListPopupWindow并传递要在弹出窗口中显示的项目列表,希望这会有所帮助。

答案 2 :(得分:0)

使用弹出菜单。 Android弹出菜单显示锚文本下方的菜单(如果空间可用,否则在锚文本上方)。如果在弹出菜单外单击,它就会消失。

检查它:

http://www.javatpoint.com/android-popup-menu-example