그래서 지난 몇 시간 동안 나를 괴롭혔습니다.외부 터치에서 대화창을 열고 외부 접촉을 잡는 방법은 무엇입니까?
내가 확장 한 대화 상자가 있는데, 짐작하면 Dialog
입니다. 사용자가 대화 상자 바깥을 클릭하면 대화 상자를 닫고 싶지 않습니다. 간단하게이 줄을 사용할 수 있기 때문에 다소 쉽습니다. dialog.setCanceledOnTouchOutside(false)
. 그러나 사용자가 대화 상자 외부를 터치하면 특정 동작을 수행하려고합니다. 닫히지 않습니다 대화 상자가 (How to cancel an Dialog themed like Activity when touched outside the window?) 너무 쉽다는 것을 :
getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);
getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
그리고 사용자 정의 onTouchEvent(MotionEvent event)
을 구현.
그러나 대화 상자를 닫을뿐만 아니라 기본 버튼, 예를 들어 버튼 등의 작업을 수행합니다. 다른 잠재적 인 답변 (비어 있음, false는 루트보기에서 onTouchListener를 반환하고, 터치가 대화 상자 안에 있는지 여부를 확인하는 등)도 게시물에서 시도했지만 아무 소용이 없습니다.
이제 내 질문은 : Dialog
은 외부 클릭으로 닫히지 않으며 단추 및 기본 레이아웃/활동에 대한 작업을 수행하지 않지만 어떻게 알 수 있습니까? 사용자가 대화 상자 외부를 클릭합니까?
@stealthjong 그것은 당신에게 효과가 있습니까? – czajna666