我想知道如何解決我遇到的問題。如何在對話框外發生點擊時觸發事件
我有一個彈出對話框的活動。對話框沒有覆蓋整個屏幕,所以活動中的按鈕仍然顯示。當對話框邊界之外有觸摸時,我可以很容易地關閉對話框dialog.setCanceledOnTouchOutside(true);
但是,我想要做的是觸發一個事件,如果點擊超出了對話框的界限(例如,如果有人觸摸了主Activity上的按鈕,它應該關閉對話框並同時觸發該事件)。
我想知道如何解決我遇到的問題。如何在對話框外發生點擊時觸發事件
我有一個彈出對話框的活動。對話框沒有覆蓋整個屏幕,所以活動中的按鈕仍然顯示。當對話框邊界之外有觸摸時,我可以很容易地關閉對話框dialog.setCanceledOnTouchOutside(true);
但是,我想要做的是觸發一個事件,如果點擊超出了對話框的界限(例如,如果有人觸摸了主Activity上的按鈕,它應該關閉對話框並同時觸發該事件)。
工作對我來說,,
Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
謝謝薩米爾 - 它適用於我也 – fizo07 2012-03-01 14:06:40
當dialog.setCanceledOnTouchOutside(true);
,那麼你只覆蓋onCancel()
這樣的:
dialog.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//When you touch outside of dialog bounds,
//the dialog gets canceled and this method executes.
}
}
);
鍵入onCancel()
方法裏面的代碼所以它在對話框被取消時運行。
最佳答案..後2年也指相同的答案...不能再upvote :) – 2017-05-03 19:17:02
覆蓋Dialog.onCancel(...)的作品,但dialog.setOnCancelListener(。 ..)不適合我。 – user1269737 2017-07-06 19:18:58
正常的解決方案是使對話框模態。你爲什麼不想這樣做? – 2012-03-01 12:33:58
謝謝。我試圖在我的主要活動中顯示一個webview(在對話框中),以保持應用程序的外觀。 – fizo07 2012-03-01 15:32:31