如何更改弹出菜单弹出的位置 [英] How can I change the position of where my Popup menu pops up

查看:76
本文介绍了如何更改弹出菜单弹出的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在每个项目的列表视图适配器中都有一个弹出菜单.菜单在屏幕的左侧弹出,如何将其更改为右侧

I have a popup menu in a listview adapter for each item. The menu pops up on the left edge of the screen, how can I change it to be on the right

private void showPopupMenu(View v, final App app) {
    PopupMenu popupMenu = new PopupMenu(context, v);

    popupMenu.getMenuInflater().inflate(R.menu.quick_action_menu,
            popupMenu.getMenu());
    popupMenu
            .setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                    ...

推荐答案

迟到不止一次=)这是我的决定,允许您将PopupMenu设置为指定的坐标.代码不是很好,但是可以.

Better late than once =) This is my decision, allows you to set PopupMenu to the specified coordinates. The code is not very good but it works.

public void show(Activity activity, float x, float y)
{
    final ViewGroup root = (ViewGroup) activity.getWindow().getDecorView().findViewById(android.R.id.content);

    final View view = new View(context);
    view.setLayoutParams(new ViewGroup.LayoutParams(1, 1));
    view.setBackgroundColor(Color.TRANSPARENT);

    root.addView(view);

    view.setX(x);
    view.setY(y);

    PopupMenu popupMenu = new PopupMenu(context, view, Gravity.CENTER);

    popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener()
    {
        @Override
        public void onDismiss(PopupMenu menu)
        {
            root.removeView(view);
        }
    });

    popupMenu.show();
}

这篇关于如何更改弹出菜单弹出的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆