마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

커스텀다이얼로그 외부 터치시 화면 종료되게 하는 부분 확인

0 추천

현재 삼성 노트5 , S4, LG G2로 테스트 중입니다.

안드로이드 버전 노트5(6.0) / S4(4.4.2) / G2(4.4.2)입니다.

커스텀 다이얼로그를 구성하여 사용중인데

커스텀 다이얼로그 외부 영역 및 LG폰의 소프트키 뒤로가기 누르면 BUTTON_POSITIVE가 동작을 합니다.

삼성폰은 setCanceledOnTouchOutside의 값을 true로 값을 주거나 아예 안 주어도 외부영역 클릭시 화면이 종료되었는데

LG폰은 값을 주거나 안 주어도 BUTTON_POSITIVE 버튼 동작으로 동작을 합니다. 

소프트키와 관련이 있을 것이라고 생각이 되는데....

해결할 수 있는 방법이 없는가요??

버튼은 TEXTVIEW를 버튼으로 사용하고 있습니다.

		alarm1_set_time.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				alarm_value=1;
				
				View customtitle = View.inflate(mContext, R.layout.alert_dlg_title, null);
				TextView mTitle = (TextView) customtitle.findViewById(R.id.alertTitle);
				mTitle.setText(getResources().getString(R.string.alarm1_main_title));
				TimePickerDialog dialog = new TimePickerDialog(MainActivity.this, timeSetListener, alarm1_hour, alarm1_minute, false);			
				dialog.setCustomTitle(customtitle);
				dialog.setCanceledOnTouchOutside(true);
				dialog.setButton(TimePickerDialog.BUTTON_POSITIVE, getResources().getString(R.string.setting), dialog);
				dialog.setButton(TimePickerDialog.BUTTON_NEGATIVE, getResources().getString(R.string.notsetting), new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						alarm_dismiss();
						dialog.cancel();
					}
				});
				dialog.show();
				
			}
		});

 

쿠쿠부다스 (6,470 포인트) 님이 2017년 4월 13일 질문

1개의 답변

0 추천

setCanceledOnTouchOutside이 뭔지는 모르겠지만

삼성단말기에서도 setCancelable(false) 로 하면 바깥 터치해도 종료되지 않는데요..

 

만약 다이얼로그가 종료 될때의 이벤트를 알고 싶으신거면 onDismissListener를 사용하시면 되구요.

Development Guy (70,570 포인트) 님이 2017년 4월 13일 답변
setCancelable FALSE은 바깥에 터치해도 종료되지 않게 하기 위해서 사용합니다.
삼성단말기는 저 함수?를 사용하지 않아도 동작이 잘되는데.
LG단말기는 다이얼로그가 정상작동이 되지 않네요...
negative를 눌러도 positive로 되네요... LG폰만 아니고 소프트 키를 쓰는 폰이 다 동일할 거같은데... 한번 찾아봐야겠네요 ㅠㅠ
...