在特定的地方打开Android菜单

时间:2015-01-19 06:56:50

标签: android android-menu

我知道如何使用Java或XML制作android菜单以及如何使用或调用但现在我面临一个新的情况,即我想在特定的地方打开菜单,就像我点击图像而不是菜单弹出那个形象的地方。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

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);

}

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

要在图像上打开此弹出窗口,请单击写入图像的onClickLsitener,如下所示:

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

答案 1 :(得分:0)

我已回答类似的问题here,我在该示例中使用了 PopUpWindow ,您也可以使用 DialogFragment 但略微最小的选项,两者都支持自定义布局看起来像菜单。您可以在屏幕上单击的按钮或操作栏按钮

上执行类似选项

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

2)showAtLocation()它具有重力属性,如 X Y 位置,您可以在屏幕中提到您希望菜单出现在屏幕上的哪个位置