弹出窗口显示在屏幕的中心和上下文之外

时间:2014-09-03 15:20:21

标签: android popup window screen center

我想要的是......有一个浮动图标(总是在其他应用程序之上)。点击它会显示一个位于屏幕中央的弹出窗口。我已经尝试了接受的答案here,但它不起作用:(

2 个答案:

答案 0 :(得分:1)

捆绑后,这么多功能得到了预期的结果。而不是使用ShowAtLocation()使用showAsDropDown()。定义锚点,宽度和高度。如果你的min sdk超过16,那么你可以使用gravity作为第四个参数。

popupWindow.showAsDropDown(mcontext.findViewById(R.id.ap1), LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

答案 1 :(得分:0)

好吧,在与它搏斗之后,我找到了一种方法来做到这一点。这是一个棘手的LOL。

    public void createWindow() {
    //initialize the popup window
    // blah blah blah and right before you're about to show it, create
    // a framelayout like the one below. And use windowmanager to addView 
    // (just like the way we create a floating icon on top of other apps)
    framelayout = new FrameLayout(this);
    WindowManager.LayoutParams layoutparameters = new WindowManager.LayoutParams(
            width, height, WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                    | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
            PixelFormat.TRANSLUCENT);

    parameters.gravity = Gravity.TOP | Gravity.LEFT;
    manager.addView(framelayout, layoutparameters);
    framelayout.post(new Runnable() {
        public void run() {
            pop.showAtLocation(framelayout, Gravity.CENTER, 0, 0);
        }
    });
    }

我的朋友们还没有完成!不要忘记createWindow()方法。

    pop.setOnDismissListener(new OnDismissListener() {

        @Override
        public void onDismiss() {
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    try {
                        manager.removeView(framelayout);
                        framelayout = null;
                    } catch (Exception e) {

                    }
                }
            }, 500);

你可以离开处理程序。我使用它是因为我的弹出窗口使用动画来消除(是的,我的动画持续时间是500毫米)。完成!