A 란 액티비티에서 AlertDialog.Builder 를 띄웁니다..
여기서 PositiveButton 만 존재 하고 , setView 를 통해 AlertDialog 는 Customized 되었습니다.
이 때 AlertDialog 내부의 TextView 를 클릭 했을 때 이 텍스트 뷰의 클릭 리스터로 , AlertDialog 를 닫은 후 다른 액티비티를 실행하고 싶습니다.
그런데 방법을 도저히 모르겠네요 ....
원하는 건, 기본적으로 AlertDialog.Builder 에 내장된 PosButton 이나 NegButton 을 이용하지 않고 child view 의 다른 클릭리스닝을 통해 닫을 순 없는 건가요?
참고로 TextSize도 설정할 수 있습니다.
AlertDialog alert = new AlertDialog.Builder(this)
.setMessage("핸드폰번호가 올바르지 않습니다.").show();
// TextSize 세팅
((TextView)alert.findViewById(com.android.internal.R.id.message))
.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
그리고 위와 같은 방법으로 Toast, ProgressDialog 등의 TextSize도 조절 가능합니다.
Toast 예제
Toast toast = Toast.makeText(this, "핸드폰번호가 올바르지 않습니다.", Toast.LENGTH_SHORT); ((TextView)toast.getView().findViewById(com.android.internal.R.id.message)) .setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); toast.show();
ProgressDialog 예제
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("전송 중...");
progress.show();
// 주의!! show() 아래에서 얻어야 함. 위에서 하면 null임.
((TextView)progress.findViewById(com.android.internal.R.id.message))
.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
위 코드 중 com.android.internal.R 클래스는 platforms\android-x\data\layoutlib.jar에 있습니다.
layoutlib.jar를 User Library로 등록한 후 Project에 추가하면 됩니다.
(※ external jar로 추가하면 classes.dex에 추가되어 apk가 엄청 커지므로 반드시 User Library로 추가하세요.)
그리고 layoutlib.jar를 추가하면 날짜와 시간 선택할 때 사용되는 NumberPicker도 직접 사용할 수 있습니다.
(위아래 + - 버튼으로 숫자 선택하는 Widget)




있습니다. show()의 return이 AlertDialog이므로 변수로 받아놨다가 dismiss() 하면 됩니다.
아래는 3초 후 자동으로 닫히는 AlertDialog 예제입니다.
-------------------------------------------------------------------------------------------
final AlertDialog alert = new AlertDialog.Builder(this).setMessage("핸드폰번호가 올바르지 않습니다.").show();
new Handler().postDelayed(new Runnable() {
public void run() {
if (alert.isShowing()) alert.dismiss();
}
}, 3 * 1000);
-------------------------------------------------------------------------------------------