目的:彈窗只有點擊按鈕可以關閉。
前提:彈窗內有輸入框
試了網上的一些方法
設置彈窗焦點 setFocusable(false) (會導致軟鍵盤無法顯示)
- 重寫 onBackPressed 方法 (不會走這里)
- 為 popupwindow 設置 onKeyListener 監聽 (不會走這里)
最終的解決方法:繼承?PopupWindow
?并重寫 dismiss 方法
public class NonDismissPopupWindow extends PopupWindow {public NonDismissPopupWindow(View contentView, int width, int height) {super(contentView, width, height, true);}private boolean isDisMiss = false;public void setIsDisMiss(boolean isDisMiss){this.isDisMiss = isDisMiss;}@Overridepublic void dismiss() {// 空實現,阻止默認關閉行為// 或者通過條件控制是否關閉if(isDisMiss){super.dismiss();}}
}
手動關閉前改下 isDisMiss的值就可以了