2
私はダイアログを持っており、時間の経過後にオンタッチで外に出ることを拒否したいと思います。ダイアログの終了の遅延 - Android
私はこれを行う場合 -
dialog.setCanceledOnTouchOutside(false);
を、私はそれが非解約作ったので、
listview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
(new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
dialog.dismiss();
}
}, 500);
}
return false;
}
});
明らかにそれは、動作しません、基本的なビューにタッチリスナーを追加します。
しかし、私はこれを行う場合 -
dialog.setCanceledOnTouchOutside(true);
を私は解雇の遅延を制御することはできません。
これを制御するために使用できるウィンドウのプロパティなどはありますか?外部のダイアログタッチイベントをどのように追跡できますか?あなたが次にあなたが "手動" あなたDialog
を作成する必要がありますonTouchEvent
private class MyDialog extends Dialog{
// constructors
@Override
public boolean onTouchEvent(MotionEvent event) {
Rect dialogRect = new Rect();
getWindow().getDecorView().getHitRect(dialogRect);
if (!dialogRect.contains((int) event.getX(), (int) event.getY())) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.cancel();
}
return super.onTouchEvent(event);
}
}
をオーバーライドするカスタムDialog
を作成することができ
はIDKの..ダイアログの代わりに半透明のアクティビティを使用して、すべてのタッチを処理できます。 –