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