按下后退按钮时关闭弹出窗口

时间:2014-08-12 04:33:59

标签: android popupwindow

我想在按下后退按钮时关闭弹出窗口。我试过这段代码: popwindow.setBackgroundDrawable(new BitmapDrawable());并且它有效。但在我的应用程序中,即使在弹出窗口外触摸,弹出也应该保留。只有在按下后退按钮时才应该关闭它。所以我尝试了这个:popwindow.setFocusable(false); 现在,当弹出窗口时,它不会被解雇。但它也没有在背压上解雇。我不想覆盖`onBackPressed()。有没有其他方式,通过它我可以实现这一目标。提前谢谢..

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

像这样设置..

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

答案 2 :(得分:2)

要点击外部的popwindow 禁用弹出式关闭功能 设置

popwindow.setCanceledOnTouchOutside(false);

用于关闭后退按钮 设置

popwindow.setCancelable(true);

答案 3 :(得分:1)

除了setOutsideTouchable(true)setFocusable(true)我必须添加

popUpView.setBackgroundDrawable(new BitmapDrawable())

让它发挥作用。这并没有改变我的弹出窗口的UI,但出于一些神奇的原因,启用了后退按钮功能。

答案 4 :(得分:1)

以下代码可能会有所帮助:

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

并且,最后必须调用popupWindow(popupWindow.showAsDropDown或popupWindow.showAtLocation)的节目。

答案 5 :(得分:-2)

将Popup属性设置为..

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