私は外部をクリックしてダイアログを閉じる方法についていくつかの記事を見てきました。しかし、ダイアログウィンドウの内側をクリックして同じ機能を利用する方法はありますか?Androidでダイアログを閉じるにはどうすればいいですか?
ダイアログウィンドウのタップを検出するダイアログのリスナーはありますか?
私は外部をクリックしてダイアログを閉じる方法についていくつかの記事を見てきました。しかし、ダイアログウィンドウの内側をクリックして同じ機能を利用する方法はありますか?Androidでダイアログを閉じるにはどうすればいいですか?
ダイアログウィンドウのタップを検出するダイアログのリスナーはありますか?
恐らく、ダイアログの境界内の任意の場所でタッチイベントを検出したいと考えています。あなたがカスタムダイアログを作成している場合(View
のセットを何らかの並べ替えのView
に組み立てて、ダイアログのメインコンテンツビューとしてView
を.setContentView()
を使用して設定した場合)、おそらくonTouch
リスナーをそのコンテンツの親はView
です。さらに、mDialog.findViewById()
を使用してビューを保持することができます。たとえば、AlertDialog
を使用していた場合、メインレイアウトView
を保持するためにどのようなリソースIDを使用するかを決めることができます。
ダイアログボックスを閉じるには、独自のDialogアクティビティを作成し、finish()を呼び出します。
答えをいただき、ありがとうございます。しかし、私は現在のアクティビティの上にダイアログのホバーを置いておきたいです(私の現在のアクティビティが表示されているダイアログの上と下に透明な領域があります)。私のアクティビティのボタンがクリックされるとダイアログが表示されます。 dialog.setCanceledOnTouchOutside(true)を使用して、ダイアログ外の領域をタップしてダイアログを閉じることができます。 Reksによると、私はDialogのボタンを使用できません!したがって、私はそれがクリックされたときにダイアログを閉じる方法を探しています。 – Ahmed
アクティビティで任意のレイアウトを使用できます。透明なものも含みます。それはダイアログボックスのように見え、あなたが望むどんなふうにでも動作させることができます。あなたが本当にモーダルダイアログボックスのように見えて振る舞いますが、カスタムディスマイスロジックを持つものが本当に必要な場合は、これが機能します。 –
ダイアログにレイアウトがある場合は、そのビューへの参照をビューとして取得し、その上に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;
}
};
このスニペットはdialogObject.setCanceledOnTouchOutside(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