在特定位置打开 android 菜单

Open android menu on a specific place

我知道如何使用 Java 或 XML 制作 android 菜单以及如何使用或调用,但现在我面临一个新情况,即我想在特定的地方,比如当我点击图片而不是那个图片地方的菜单弹出窗口时。

我该怎么做?

以下代码将帮助您在动态位置打开弹出窗口:

public void showMenuPopUp(final View view, final Context mCtx ) {

        LayoutInflater layoutInflater = (LayoutInflater) mCtx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View popupView = layoutInflater.inflate(R.layout.menu_popup, null);
        popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT, true);
        popupWindow.setFocusable(true);
        popupWindow.update();
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        popupWindow.setOutsideTouchable(true);

        popupWindow.setTouchInterceptor(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                    popupWindow.dismiss();
                    return true;
                }
                return false;
            }
        });


        Button btn1= (Button) popupView.findViewById(R.id.btn1);
        Button (new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 // button click event
                popupWindow.dismiss();
            }
        });

        popupWindow.showAsDropDown(view, 0, 0);

}

其中 view 是您必须打开弹出窗口的视图

要在图像上打开此弹出窗口,请点击像这样在您的图像上写入 onClickLsitener:

ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
       // your code here
        showMenuPopUp(v,Activity.this);
    }
});

我回答过类似的问题 here ,我在那个例子中使用了 PopUpWindow ,你也可以使用 DialogFragment 但稍微最小选项,都支持自定义布局,看起来像菜单。您可以对您在屏幕中单击的按钮或操作栏按钮执行类似的选项

您有两个选项,二是使用弹出窗口执行此操作,单击一个按钮,您可以执行 1)showAsDropDown(findViewbyId(R.id.menuitem),0,0) 弹出窗口,这很好,因为它看起来像是从您单击的按钮弹出的,或者

2)showAtLocation()XY 这样的重力 属性 位置,你可以提及您希望菜单出现在屏幕上的哪个位置