Android 弹出窗口显示在屏幕中央和上下文外部

Android 弹出窗口显示在屏幕中央和上下文外部,android,popup,window,screen,center,Android,Popup,Window,Screen,Center,我想要的是。。。有一个浮动图标(总是在其他应用程序的顶部)。点击它会在屏幕中央显示一个弹出窗口。我尝试了被接受的答案,但没有成功:(好吧,经过努力,我找到了一种方法。这有点棘手,哈哈 public void createWindow() { //initialize the popup window // blah blah blah and right before you're about to show it, create // a framelayout

我想要的是。。。有一个浮动图标(总是在其他应用程序的顶部)。点击它会在屏幕中央显示一个弹出窗口。我尝试了被接受的答案,但没有成功:(

好吧,经过努力,我找到了一种方法。这有点棘手,哈哈

    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()中忘记这一点


您可以离开该处理程序。我之所以使用它,是因为我的弹出窗口使用动画来关闭(是的,我的动画持续时间为500 mili)。完成!

在绑定了这么多函数后获得了预期结果。使用showAsDropDown()代替ShowAtLocation()。定义锚定点、宽度和高度。如果最小sdk大于16,则可以使用重力作为第四个参数

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