我看過幾篇關於如何通過點擊外部來解除對話的文章。但是有沒有辦法通過點擊對話窗口內部來獲得相同的功能?如何在Android中點擊它來關閉對話框?
有沒有對話框的任何監聽器會檢測到對話窗口上的一個水龍頭?
我看過幾篇關於如何通過點擊外部來解除對話的文章。但是有沒有辦法通過點擊對話窗口內部來獲得相同的功能?如何在Android中點擊它來關閉對話框?
有沒有對話框的任何監聽器會檢測到對話窗口上的一個水龍頭?
想必您可以在對話框邊界內的任意位置檢測觸摸事件。如果您正在創建自定義對話框(例如,通過將一組View
組合到某種佈局View
中,然後使用.setContentView()
將對話框的父內容View
設置爲對話框的主內容視圖),那麼也許您可以簡單地將onTouch
偵聽器設置爲該內容父母View
。此外,您可以使用mDialog.findViewById()
來抓住視圖,因此例如,如果您使用的是AlertDialog
,則可能會以某種方式確定要使用哪個資源ID來抓住主佈局View
。
您可以隨時創建自己的對話框活動,並在用戶單擊要關閉對話框的區域時調用finish()。
謝謝你的答案。但我希望Dialog將鼠標懸停在當前活動上(在顯示當前活動的對話框的上方和下方有一個透明區域)。要詳細說明,單擊我的活動中的按鈕時會顯示對話框。我可以使用 dialog.setCanceledOnTouchOutside(true);點擊對話框外的區域來關閉對話框。 根據reks,我不能使用對話框上的任何按鈕!因此,我試圖尋找一種能夠在點擊時消除對話框的方式。 – Ahmed 2012-02-07 21:30:13
您可以使用任何您想要的活動佈局;包括一個透明的。它看起來就像一個對話框,你可以使其表現出任何你想要的方式。如果你真的想要看起來像一個模式對話框,但具有自定義解除邏輯的東西,這將工作。 – 2012-02-07 21:33:22
如果在對話框中有佈局,則可以將該對象的引用視爲視圖,並在其上放置onClickListener。因此,假設您的對話框具有自定義佈局,並查看整個對話框,請獲取對該對話框的引用。
例如,假設一個對話框有一個名爲mainll的LinearLayout,包含您的自定義視圖,您可以:
LinearLayout ll - (LinearLayout) findViewById(R.id.mainll);
ll.setOnClickListener(...) { onClick()... }
然後任何時間任何東西被點擊的LinearLayout內,它會註冊一個點擊事件。
覆蓋Dialog.onTouchEvent(...)
可捕獲屏幕上任何位置的任何水龍頭。要通過隨時隨地敲擊關閉該對話框:
Dialog dialog = new Dialog(this) {
@Override
public boolean onTouchEvent(MotionEvent event) {
// Tap anywhere to close dialog.
this.dismiss();
return true;
}
};
下面是一個例子,說明如何處理對話框中的onTouch事件。訣竅在於創建自定義偵聽器。
http://about-android.blogspot.co.uk/2010/02/create-custom-dialog.html
here i have taken my close icon ,if u need u can take anything like button
first of all u have implement to the class
class somethingclass Dialog implements View.OnClickListener
then set the event for particular
icon_close.setOnClickListener(this);
then override the class function
@Override
public void onClick(View v) {
if(R.id.icon_close==v.getId()){
dismiss();
}else
}
Note: if passible u can give dilaog.dismiss();
謝謝。我在findViewById 0_0之前缺少對話框部分 – Ahmed 2012-02-16 16:25:04