mojo's Blog
대화상자 본문
대화상자(dialog)는 화면에 메시지를 나타낸 후 확인이나 취소 같은 사용자의 선택을 받아들이는 경우에 사용한다.
토스트보다 좀 더 강력한 메시지를 보낼 때 적당하다.
대화상자를 만드는 과정은 3단계로 다음과 같다.
1. 대화상자 생성 => AlertDialog.Builder 클래스로 생성
2. 용도에 따른 설정 => setTitle(), setMessage(), ...
3. 대화상자 화면 출력 => show()
activity_main.xml Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:text="대화상자"/>
</LinearLayout>
Java Code
public class MainActivity extends Activity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("연습하기");
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("제목입니다");
dlg.setMessage("이곳이 내용입니다");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(),"확인을 클릭했네요", Toast.LENGTH_SHORT).show();
}
});
dlg.show();
}
});
}
}
대화상자에 리스트 형태의 목록을 출력하고 그중 하나를 선택하게 할 수 있다.
Java Code
public class MainActivity extends Activity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("연습하기");
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String[] versionArray = {"고양이","토끼","라이언"};
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("좋아하는 동물은?");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
btn1.setText(versionArray[i]);
}
});
dlg.setPositiveButton("확인", null);
dlg.show();
}
});
}
}
라디오버튼과 같은 형태로 구현할 수 있다. => setSingleChoiceItems() 메소드를 이용
dlg.setSingleChoiceItems(versionArray, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
btn1.setText(versionArray[i]);
}
});
여러 개를 동시에 선택하는 체크박스 형태로 구현할 수 있다. => setMultiChoiceItems() 메소드를 이용
final String[] versionArray = {"고양이","토끼","라이언"};
final boolean[] checkArray = {true, false, false};
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("좋아하는 동물은?");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setMultiChoiceItems(versionArray, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
btn1.setText(versionArray[i]);
}
});
dlg.setPositiveButton("확인", null);
dlg.show();
연습 ) 사용자 정보 입력 앱 만들어 보기
activity_main.xml Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사용자 이름"
android:layout_margin="5dp"
android:id="@+id/text1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사용자 이메일"
android:layout_margin="5dp"
android:id="@+id/text2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="여기를 클릭"
android:layout_margin="5dp"
android:id="@+id/btn1"/>
</LinearLayout>
dialog1.xml Code
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사용자 이름"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이름을 입력하세요"
android:id="@+id/dlgEdt1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사용자 이메일"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="이메일을 입력하세요"
android:id="@+id/dlgEdt2"/>
</LinearLayout>
toast1.xml Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="#ff0000">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/lion"
android:scaleType="fitXY"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" TextView "
android:id="@+id/toastTxt"
android:textSize="20dp"/>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/lion"
android:scaleType="fitXY"/>
</LinearLayout>
Java Code
public class MainActivity extends Activity {
TextView text1, text2, toastText;
Button btn;
EditText dlgEdt1, dlgEdt2;
View dialogView, toastView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("연습하기");
text1 = (TextView)findViewById(R.id.text1);
text2 = (TextView)findViewById(R.id.text2);
btn = (Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialogView = (View)View.inflate(MainActivity.this, R.layout.dialog1, null);
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("사용자 정보 입력");
dlg.setIcon(R.drawable.rabbit);
dlg.setView(dialogView);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dlgEdt1 = (EditText)dialogView.findViewById(R.id.dlgEdt1);
dlgEdt2 = (EditText)dialogView.findViewById(R.id.dlgEdt2);
text1.setText(dlgEdt1.getText().toString());
text2.setText(dlgEdt2.getText().toString());
}
});
dlg.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast toast = new Toast(MainActivity.this);
toastView = (View)View.inflate(MainActivity.this,R.layout.toast1, null);
toastText = (TextView)toastView.findViewById(R.id.toastTxt);
toastText.setText(" 취소했습니다 ");
toast.setView(toastView);
toast.show();
}
});
dlg.show();
}
});
}
}
'Android' 카테고리의 다른 글
파일 처리 및 응용 (0) | 2021.08.31 |
---|---|
안드로이드 프로그래밍 제 7장 연습문제 (4, 5, 6번) (0) | 2021.08.30 |
메뉴 (0) | 2021.08.30 |
안드로이드 프로그래밍 제 6장 연습문제 6번 (0) | 2021.08.29 |
View Container (0) | 2021.08.29 |
Comments