Android PopupWindow 點選消失解決辦法
阿新 • • 發佈:2019-02-11
最近專案中用到了PopupWindow,需要點選PopupWindow 的時候,PopupWindow隱藏掉,總結了一下有2中實現方式。
1、點選PopupWindow 外部區域時,PopupWindow消失
popMenu = new PopupWindow(getApplicationContext()); popMenu.setWidth(LayoutParams.MATCH_PARENT); popMenu.setHeight(LayoutParams.MATCH_PARENT); popMenu.setBackgroundDrawable(new BitmapDrawable()); popMenu.setFocusable(true); popMenu.setOutsideTouchable(true);
這裡使用了 setOutsideTouchable 屬性,具體可以去參考 developer文件。
使用PopupWindow注意事項:必須設定PopupWindow的backgroundDrawable,否則會出現各種意想不到的bug。
2、點選PopupWindow 自身時(非按鈕控制元件時),PopupWindow消失
解決辦法:給 PopupWindow的 contentView 註冊一個點選事件
view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(popMenu.isShowing()){ dismiss(); } } });
popMenu.setContentView(view);
popMenu.showAtLocation(v, Gravity.BOTTOM, 0, 0);
// popMenu.setAnimationStyle(R.style.popwin_anim_style);
popMenu.update();