当按下后退按钮解雇弹出窗口(Dismiss Pop up window when back butt

2019-10-20 16:04发布

我希望当按下后退按钮以关闭弹出窗口。 我试着用这个代码: popwindow.setBackgroundDrawable(new BitmapDrawable()); 和它的作品。 但是,在我的应用程序,弹出应该保持,甚至触摸弹出窗口之外之后。 它应该只在按下后退按钮被解雇。 所以,我想这一点: popwindow.setFocusable(false); 现在,它在弹出外脚不沾解雇。 但它不是解雇背部受压过。 我不想在此改变`onBackPressed()。 是否有任何其他的方式,通过它我可以做到这一点。 提前致谢..

Answer 1:

禁用弹出解雇时点击 popw​​indow集以外

popwindow.setCanceledOnTouchOutside(false);

并消除它的后退按钮

popwindow.setCancelable(true);


Answer 2:

popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
new ScaleInAnimation(popupView).animate();
popupWindow.getContentView().setFocusableInTouchMode(true);
popupWindow.getContentView().setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            popupWindow.dismiss();
                return true;
            }
            return false;
        }
    });


Answer 3:

设置这样的..

    popupWindow.setOutsideTouchable(true); 
    popupWindow.setTouchable(true); 
    popupWindow.setBackgroundDrawable(new BitmapDrawable());           popupWindow.setTouchInterceptor(new OnTouchListener() 
{ 
@Override 
public boolean onTouch(View v, MotionEvent event) 
{ 
if (AppContext.isDebugMode()) 
Log.d("POPUP_WINDOW", "v: "+v.getTag() + " | event: "+event.getAction());
 popupWindow.dismiss(); return true; 
} 
});


Answer 4:

除了从setOutsideTouchable(true)setFocusable(true)我不得不添加

popUpView.setBackgroundDrawable(new BitmapDrawable())

使它工作。 这并没有改变我的弹出窗口的UI,但由于某些原因的神奇,使后退按钮功能。



Answer 5:

下面的代码可以是有益的:

popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.showAsDropDown(mParent);

而且,popupWindow(popupWindow.showAsDropDown或popupWindow.showAtLocation)的演出必须在结束时调用。



Answer 6:

设置弹出财产..

      popup.setOutsideTouchable(false);
      popup.setCancelable(true);


文章来源: Dismiss Pop up window when back button is pressed