Android UI 시리즈--Dialog 대화 상자 예제
1.다이얼 로그
안 드 로 이 드 공식 문서 의 Dialog 에 대한 소 개 를 먼저 살 펴 보 겠 습 니 다.
A dialog is a small window that prompts the user to make a decision or enter additional information. A dialog does not fill the screen and is normally used for modal events that require users to take an action before they can proceed.
dialog 는 화면 에 사용자 가 선택 을 하거나 추가 정 보 를 입력 할 수 있 는 대화 상 자 를 팝 업 하 는 것 입 니 다.대화 상 자 는 전체 화면 에 묻 지 않 고 모델 이벤트 에서 사용자 가 결정 을 내 려 야 계속 실 행 됩 니 다.
Dialog 클래스 는 dialog 대화 상자 의 기본 클래스 입 니 다.그러나 이 클래스 를 직접 사용 하여 dialog 대화 상 자 를 예화 하 는 것 은 피해 야 합 니 다.하위 클래스 를 사용 하여 대화 상 자 를 가 져 와 야 합 니 다.
java.lang.Object
↳ android.app.Dialog
Known Direct Subclasses
AlertDialog, CharacterPickerDialog, MediaRouteChooserDialog, MediaRouteControllerDialog, Presentation
Known Indirect Subclasses
DatePickerDialog, ProgressDialog, TimePickerDialog
Dialog 는 하위 클래스 가 많이 이 루어 지 는 것 을 보 았 습 니 다.따라서 대화 상 자 를 정의 하고 하위 클래스 를 사용 하여 하 나 를 예화 하면 됩 니 다.Dialog 라 는 부모 클래스 를 직접 사용 하지 마 십시오.
2.AlertDialog
오늘 우리 가 중점적으로 알 아야 할 것 은 바로 AlertDialog 대화 상자 입 니 다.우 리 는 AlertDialog 가 Dialog 의 직접적인 하위 클래스 라 는 것 을 보 았 습 니 다.
AlertDialog 를 사용 하면 제목,최대 3 개의 단추 동작,그리고 선택 상자 나 자신 이 정의 한 팝 업 상 자 를 표시 할 수 있 습 니 다.
안 드 로 이 드 의 공식 문서 에서 제공 하 는 그림 을 빌려 AlertDialog 상자 의 구성 을 살 펴 보 겠 습 니 다.
① 영역 1 은 팝 업 상자 의 머리 정 보 를 정의 하 는 것 으로 제목 이나 아이콘 을 포함한다.
② 영역 2 는 AlertDialog 대화 상자 의 content 부분 입 니 다.여기 서 message 정 보 를 설정 하거나 선택 상 자 를 정의 할 수 있 으 며 레이아웃 팝 업 상 자 를 정의 할 수 있 습 니 다.
③ 구역 3 에서 우리 의 Action Buttons 부분 을 정의 할 수 있 습 니 다.
Action Buttons 하면 특히 주의해 야 합 니 다.
AlertDialog 에서 정의 단 추 는 모두 setXXxButton 방법 을 통 해 이 루어 집 니 다.그 중에서 모두 3 가지 다른 Action Buttons 가 우리 에 게 선택 할 수 있 습 니 다.
1.setPositiveButton(CharSequence text,DialogInterface.OnClickListener listener)은 OK 에 해당 하고 조작 을 확인 하 는 단추 입 니 다.
2.setNegativeButton(CharSequence text,DialogInterface.OnClickListener listener)은 동작 을 취소 하 는 단추 입 니 다.
3.setNeutralButton(CharSequence text,DialogInterface.OnClickListener listener)이것 은 조작 을 무시 하 는 단추 에 해당 합 니 다.
우리 의 모든 action buttons 는 최대 한 개 만 나타 날 수 있 습 니 다.즉,팝 업 대화 상 자 는 최대 한 개의 Positive Button 만 나타 날 수 있 습 니 다.
다음은 우리 가 자주 사용 하 는 몇 가지 AlertDialog 대화 상 자 를 구체 적 인 실례 를 통 해 살 펴 보 자.
1.경고 상자 하 나 를 꺼 내 고 세 개의 단 추 를 선택 할 수 있 습 니 다.
코드 부분 을 살 펴 보 겠 습 니 다.
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// AlertDialog.Builder AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// Title
builder.setIcon(R.drawable.ic_launcher);
// Title
builder.setTitle(" ");
// Content
builder.setMessage(" ?");
// PositiveButton
builder.setPositiveButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this, "positive: " + which, Toast.LENGTH_SHORT).show();
}
});
// NegativeButton
builder.setNegativeButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this, "negative: " + which, Toast.LENGTH_SHORT).show();
}
});
// NeutralButton
builder.setNeutralButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this, "neutral: " + which, Toast.LENGTH_SHORT).show();
}
});
//
builder.show();
}
});
AlertDialog 대화 상 자 를 만 들 려 면 AlertDialog 의 내부 클래스,즉 AlertDialog.Builder 를 사용 하여 AlertDialog 대화 상 자 를 만 든 다음 setXX 방법 으로 표시 하고 자 하 는 내용 을 설정 하면 됩 니 다.우 리 는 모두 3 개의 action buttons 를 설정 한 것 을 보 았 습 니 다.모든 button 은 하나의 DialogInterface.OnClickListener()의 감청 사건 을 연결 한 다음 에 그 안에서 Toast 토스트 대화 상자(이것 은 뒤에 수필 에서 설명 할 것 입 니 다)를 통 해 우리 의 정 보 를 팝 업 합 니 다.which 방법 은 action button 이 대표 하 는 int 값 을 표시 합 니 다.
positive: -1
negative: -2
neutral: -3
which=-1 은 확인 단 추 를 눌 렀 음 을 나타 내 고-2 는 취소 단 추 를 눌 렀 음 을 나타 내 며-3 은 무시 단 추 를 눌 렀 음 을 나타 낸다.
2.드 롭 다운 목록 팝 업 상자
키 코드 는 다음 과 같 습 니 다:
button2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(" ");
//
final String[] cities = {" ", " ", " ", " ", " "};
//
builder.setItems(cities, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this, " :" + cities[which], Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
});
여기 서 setItems(CharSequence[]items,DialogInterface.OnClickListener listener)방법 으로 드 롭 다운 목록 상 자 를 설정 합 니 다.메모:드 롭 다운 목록 상자 나 드 롭 다운 다 중 선택 상자 가 모두 Content 에 표시 되 어 있 기 때문에 message 와 드 롭 다운 목록 상자 가 동시에 존재 할 수 없습니다.DialogInterface.OnClickListener 모니터 를 연결 할 수도 있 습 니 다.옵션 을 선택 하면 대화 상자 가 사라 집 니 다.이 which 는 드 롭 다운 목록 의 모든 옵션 의 색인 을 대표 합 니 다.이 를 통 해 사용자 가 선택 한 옵션 이 무엇 인지 쉽게 얻 을 수 있 습 니 다.
3.드 롭 다운 체크 상자 팝 업
button3.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(" ");
final String[] sex = {" ", " ", " "};
//
/**
*
* , ,1 ' '
*
*/
builder.setSingleChoiceItems(sex, 1, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this, " :" + sex[which], Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
builder.setNegativeButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
builder.show();
}
});
메모:드 롭 다운 체크 상 자 를 팝 업 할 때 옵션 을 선택 하면 대화 상자 가 사라 지지 않 습 니 다.action button 을 눌 러 야 대화 상자 가 사라 집 니 다.4.드 롭 다운 다 중 선택 상자 팝 업
button4.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(" ");
final String[] hobbies = {" ", " ", " ", " "};
//
/**
*
* , null, , ,
* boolean[] , , {true, false, false, true};
*
*/
builder.setMultiChoiceItems(hobbies, null, new DialogInterface.OnMultiChoiceClickListener()
{
StringBuffer sb = new StringBuffer(100);
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked)
{
if(isChecked)
{
sb.append(hobbies[which] + ", ");
}
Toast.makeText(MainActivity.this, " :" + sb.toString(), Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
builder.setNegativeButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
builder.show();
}
});
드 롭 다운 다 중 선택 상 자 를 설정 할 때 setMultiChoiceItems 방법 을 사용 하 는 것 을 보 았 습 니 다.각 매개 변수의 의 미 는 위 코드 에서 설명 되 었 습 니 다.마찬가지 로 드 롭 다운 다 중 선택 상자 에 대해 서 는 옵션 중 하 나 를 선택 하면 대화 상 자 는 사라 지지 않 고 action button 을 눌 러 야만 사라 집 니 다.
5.사용자 정의 팝 업 대화 상자
사용자 정의 팝 업 대화 상자 에 대해 서 는 사용자 정의 레이아웃 파일 을 지정 해 야 합 니 다.사용자 이름과 비밀 번 호 를 입력 하 는 가장 쉬 운 두 개의 EditText 를 드 립 니 다.
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="username"/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username"
android:hint="password"
android:inputType="textPassword"/>
</RelativeLayout>
키 코드:
button5.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(" ");
// LayoutInflater xml View
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);
// Content
builder.setView(view);
final EditText username = (EditText)view.findViewById(R.id.username);
final EditText password = (EditText)view.findViewById(R.id.password);
builder.setPositiveButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
String a = username.getText().toString().trim();
String b = password.getText().toString().trim();
//
Toast.makeText(MainActivity.this, " : " + a + ", : " + b, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton(" ", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
builder.show();
}
});
사용자 정의 팝 업 상 자 를 통 해 xml 레이아웃 파일 을 작성 한 다음 레이아웃 파일 을 정의 해 야 합 니 다.레이아웃 파일 에서 Button 단 추 를 정의 할 필요 가 없습니다.AlertDialog.Builder 를 통 해 action buttons 를 설정 할 수 있 습 니 다.View view=LayoutInflater.from(MainActivity.this).inflate(R.layot.dialog,null);레이아웃 파일 을 불 러 와 View 대상 을 얻 은 다음 AlertDialog.Builder 의 setView 방법 으로 사용자 정의 팝 업 상 자 를 설정 할 수 있 습 니 다.
요약:여기까지,기본적으로 AlertDialog 를 상세 하 게 설명 하 였 습 니 다.이 에 세이 에 서 는 Dialog 팝 업 상자 의 기본 개념 과 AlertDialog 라 는 팝 업 상 자 를 상세 하 게 설명 하 였 습 니 다.기본 적 인 팝 업 경고 상자,드 롭 다운 목록 상자,드 롭 다운 다 중 선택 상자 등 을 정의 하 는 것 을 포함 합 니 다.후속 에 세 이 는 안 드 로 이 드 학습 의 작은 부분 을 계속 기록 할 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.