자신 만 의 Android 대화 상자(Dialog)사용자 정의 집합

Activities 는 onCreate Dialog(int),onPrepareDialog(int,Dialog),showDialog(int),dismissDialog(int)등 관리 하기 쉬 운 대화 상자 체 제 를 제공 합 니 다.이 방법 을 사용 하면 Activity 는 getOwner Activity()방법 을 통 해 이 Activity 관리 대화 상자(dialog)를 되 돌려 줍 니 다.
onCreateDialog(int):이 반전 함 수 를 사용 할 때 Android 시스템 은 이 Activity 를 모든 대화 상자 의 소유자 로 설정 하여 모든 대화 상자 의 상 태 를 자동 으로 관리 하고 Activity 에 연결 합 니 다.이렇게 하면 모든 대화 상자 가 이 Activity 의 특정 속성 을 계승 합 니 다.예 를 들 어 대화 상자 가 열 렸 을 때 메뉴 키 는 이 Activity 가 정의 하 는 옵션 메뉴 로 표시 되 고 볼 륨 키 는 Activity 가 사용 하 는 오디 오 흐름 을 수정 합 니 다.
showDialog(int):대화 상 자 를 표시 하려 면 showDialog(int id)방법 을 사용 하여 이 대화 상 자 를 표시 하 는 유일한 정 수 를 전달 합 니 다.대화 상자 가 처음 요청 되 었 을 때,Android 는 Activity 에서 onCreate Dialog(int id)를 호출 합 니 다.이 대화 상자 Dialog 를 초기 화해 야 합 니 다.이 반전 방법 은 쇼 Dialog(int id)와 같은 ID 로 전 달 됩 니 다.이 대화 상 자 를 만 든 후 Activity 의 마지막 에 이 대상 을 되 돌려 줍 니 다.
onPrepareDialog(int,Dialog):대화 상자 가 표시 되 기 전에 Android 는 선택 할 수 있 는 반전 함수 onPrepareDialog(int id,Dialog)를 호출 합 니 다.대화 상자 가 열 릴 때마다 속성 을 바 꾸 려 면 이 방법 을 정의 할 수 있 습 니 다.이 방법 은 대화 상 자 를 열 때마다 호출 되 며,onCreateDialog(int)는 대화 상자 가 처음 열 릴 때 만 호출 됩 니 다.onPrepareDialog()를 정의 하지 않 으 면 이 대화 상 자 는 지난번 에 열 었 을 때 와 같 습 니 다.이 방법 은 대화 상자 의 ID 와 onCreate Dialog()에서 만 든 대화 상자 대상 으로 도 전 달 됩 니 다.
dismissdialog(int):대화 상 자 를 닫 으 려 고 할 때 이 대화 상자 에 dismiss()를 호출 하여 제거 할 수 있 습 니 다.필요 하 다 면 이 Activity 에서 dismissDialog(int id)방법 을 호출 할 수 있 습 니 다.이 대화 상자 에 dismiss()방법 을 호출 할 수 있 습 니 다.대화 상자 의 상 태 를 onCreate Dialog(int id)방법 으로 관리 하고 싶다 면(앞에서 토론 한 것 처럼)대화 상자 가 없어 질 때마다 이 대화 상자 의 상 태 는 이 Activity 에 의 해 유 지 됩 니 다.이 대상 이 필요 하지 않 거나 이 상 태 를 지 우 는 것 이 중요 하 다 고 결정 하면 removeDialog(int id)를 호출 해 야 합 니 다.내부 대상 인용 을 삭제 하고 이 대화 상자 가 표시 되면 삭 제 됩 니 다.
다음은 몇 가지 대화 상자 의 효과 입 니 다.
그림 1 효과:이 효 과 는 되 돌아 오 는 단 추 를 누 를 때 알림 을 꺼 내 서 오류 가 없 도록 하 는 것 입 니 다.일반적인 대화 상자 스타일 을 사용 합 니 다.
코드:

//       dialog()

protected void dialog() {
AlertDialog.Builder builder = new Builder(Main.this);
builder.setMessage("     ?");

builder.setTitle("  ");

builder.setPositiveButton("  ", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();

Main.this.finish();
}
});

builder.setNegativeButton("  ", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});

builder.create().show();
}

onKeyDown(int keyCode,KeyEvent event)방법 에서 이 방법 을 호출 합 니 다.

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
dialog();
}
return false;
}


그림 1
그림 2 효과:대화 상자 의 도 표를 바 꾸 고 세 개의 단 추 를 추가 합 니 다.

Dialog dialog = new AlertDialog.Builder(this).setIcon(
android.R.drawable.btn_star).setTitle("    ").setMessage(
"          ?").setPositiveButton("   ",
new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, "        。",
Toast.LENGTH_LONG).show();
}
}).setNegativeButton("   ", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, "        。", Toast.LENGTH_LONG)
.show();
}
}).setNeutralButton("  ", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, "        。", Toast.LENGTH_LONG)
.show();
}
}).create();

dialog.show();


그림 2
그림 3 효과:정보 내용 은 간단 한 View 형식 이다.

new AlertDialog.Builder(this).setTitle("   ").setIcon(
android.R.drawable.ic_dialog_info).setView(
new EditText(this)).setPositiveButton("  ", null)
.setNegativeButton("  ", null).show();

그림 3
그림 4 효과:정보 내용 은 단일 선택 상자 입 니 다.

new AlertDialog.Builder(this).setTitle("   ").setMultiChoiceItems(
new String[] { "Item1", "Item2" }, null, null)
.setPositiveButton("  ", null)
.setNegativeButton("  ", null).show();


그림 4
그림 5 효과:정보 내용 은 다 중 선택 상자 입 니 다.

new AlertDialog.Builder(this).setTitle("   ").setIcon(
android.R.drawable.ic_dialog_info).setSingleChoiceItems(
new String[] { "Item1", "Item2" }, 0,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setNegativeButton("  ", null).show();


그림 5
그림 6 효과:정보 내용 은 간단 한 목록 항목 입 니 다.

new AlertDialog.Builder(this).setTitle("   ").setItems(
new String[] { "Item1", "Item2" }, null).setNegativeButton(
"  ", null).show();


그림 6
그림 7 효과:정보 내용 은 사용자 정의 레이아웃 입 니 다.
1.레이아웃 파일

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:background="#ffffffff" android:orientation="horizontal"
android:id="@+id/dialog">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/tvname" android:text="  :" />
<EditText android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>

</LinearLayout>

2.호출 코드

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog,
(ViewGroup) findViewById(R.id.dialog));

new AlertDialog.Builder(this).setTitle("     ").setView(layout)
.setPositiveButton("  ", null)
.setNegativeButton("  ", null).show();


그림 7
이상 은 사용자 정의 안 드 로 이 드 대화 상자(Dialog)의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기