Development/Android

14. 대화상자

궁선이 2018. 5. 5. 01:41

대화상자는 다음과 같이 팝업되는 박스를 일컫습니다.
내부에서 텍스트를 입력받거나, 체크박스를 다는 등 다양한 기능 구현이 가능합니다.

1. 기본 대화상자

가장 기본적인 대화상자 입니다.
간단한 소스로 구현이 가능합니다.

basic = (Button)findViewById(R.id.basic); //기본 대화상자 버튼 basic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //호출하고자 하는 activity 입력 AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this); dlg.setTitle("기본대화상자"); dlg.setIcon(R.mipmap.ic_launcher); dlg.setMessage("이것은 기본 대화상자입니다."); dlg.setNegativeButton("닫기",null); // null 대신 onClickListener 생성 가능 dlg.setPositiveButton("확인",null); // null 대신 onClickListener 생성 가능 dlg.show(); } });
2. 라디오버튼 대화상자

라디오 버튼은 중복선택이 되지 않는 버튼입니다.

radio = (Button)findViewById(R.id.radio); radio.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String[] data = {"치킨","스파게티"}; //final 로 해야지 접근가능 AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this); final String[] whichItem = {null}; dlg.setTitle("라디오 대화상자"); dlg.setIcon(R.mipmap.ic_launcher); //라디오 버튼 장착(setSingleChoiceItems dlg.setSingleChoiceItems(data, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { whichItem[0] = data[which]; //선택한 아이템을 전역 변수에저장 } }); dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), whichItem[0] + "선택하셨습니다.", Toast.LENGTH_SHORT).show(); } }); dlg.show(); } });
3. 체크박스 대화상자

중복선택이 가능한 체크박스를 이용한 대화상자 입니다.

checkbox = (Button)findViewById(R.id.checkbox); checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String checkstr[] = {"피아노", "독서", "영화보기", "코딩하기"}; final boolean checked[] = {false,true,false,true}; AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this); dlg.setTitle("취미를 고르세요"); //체크박스 장착(setMultipleChoiceItems) dlg.setMultiChoiceItems(checkstr, checked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { //Toast.makeText(getApplicationContext(),which,Toast.LENGTH_SHORT).show(); Log.d("Debug","asdfsadfsdf" + Integer.toString(which)); checked[which] = isChecked; } }); dlg.setPositiveButton("선택완료", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String str = ""; for(int i = 0; i<checked.length;i++){ if(checked[i]) { str = str + "," + checkstr[i]; } } Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show(); } }); dlg.show(); } });
4. 사용자정의 대화상자

팝업할 대화상자의 레이아웃을 직접 제작해 사용하는 대화상자입니다.

레이아웃소스

//dialog.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox"/> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="This is for practice"/> </LinearLayout>

액티비티 소스

custom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //View에 제작한 레이아웃을 탑재후 대화상자에 setView로 붙인다. View dlgview = View.inflate(alertAcitivy.this, R.layout.dialog,null); final EditText editText = (EditText)dlgview.findViewById(R.id.editText); AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this); dlg.setPositiveButton("확인",null); dlg.setTitle("사용자 정의 대화상자"); dlg.setView(dlgview); dlg.show(); } });