将PopupMenu锚定到ImageView

时间:2018-09-19 16:58:39

标签: android android-layout android-menu android-popupwindow

我有一个ImageView可以在单击时打开PopupMenu。如何设置PopupMenu在特定位置显示? PopupMenu将用作下拉菜单,我希望PopupMenu的右上角是用户单击的位置。请参见下面的图片以获取插图:

我目前所拥有的:

enter image description here

我想要什么:

enter image description here

相关代码:

mNavViewDropDown= navViewHeader.findViewById(R.id.navview_header_expand);
mNavViewDropDown.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        PopupMenu popup = new PopupMenu(getContext(), mNavViewDropDown);
        //Inflating the Popup using xml file
        popup.getMenuInflater()
                .inflate(R.menu.menu_navview_header_, popup.getMenu());
        //registering popup with OnMenuItemClickListener
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(
                        getContext(),
                        "You Clicked : " + item.getTitle(),
                        Toast.LENGTH_SHORT
                ).show();
                return true;
            }
        });
        popup.show(); //showing popup menu
    }
});

2 个答案:

答案 0 :(得分:0)

您可以设置弹出菜单的重力。

ext_modules

话虽这么说,您正在做的更多的是hack。无法保证它将显示在左侧。您应该使用expandableListView或制作自己的可扩展视图。试试这个库:https://github.com/AAkira/ExpandableLayout。它提供了一种显示可扩展视图的简便方法。

答案 1 :(得分:0)

因此,我意识到已经有了更好的工具来代替:

https://developer.android.com/guide/topics/ui/controls/spinner#java