Android UI 시리즈--Dialog 대화 상자 예제

16297 단어 androiddialog
안 드 로 이 드 개발 에서 인터페이스 에 Dialog 대화 상 자 를 꺼 내 서 우리 가 자주 해 야 할 일 입 니 다.이 수필 은 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 라 는 팝 업 상 자 를 상세 하 게 설명 하 였 습 니 다.기본 적 인 팝 업 경고 상자,드 롭 다운 목록 상자,드 롭 다운 다 중 선택 상자 등 을 정의 하 는 것 을 포함 합 니 다.후속 에 세 이 는 안 드 로 이 드 학습 의 작은 부분 을 계속 기록 할 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기