Android UIシリーズ---Dialogダイアログ

16518 ワード

変換元:http://www.cnblogs.com/xiaoluo501395377/p/3419398.html
この総括は全面的に書いてあるので、私は直接持ってきて、繰り返し車輪を作るのを避けました.の以下の例に加えて、Andorid API Demoにも比較的完全なDialogの例があり、直接持ってきて勉強することもできます.(API Demoのgithubアドレス:https://github.com/appium/android-apidemos)
Androidの開発では、インタフェースにDialogダイアログボックスが表示され、私たちが常に行う必要があります.このエッセイでは、Dialogダイアログボックスという概念を詳しく説明します.異なるスタイルのダイアログボックスを定義することも含まれています.
一、Dialog
まずandroid公式ドキュメントの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という親を直接使用して構築するのではなく、そのサブクラスをインスタンス化するダイアログボックスを定義します.
二、AlertDialog
今日私たちが重点的に理解しなければならないのはAlertDialogダイアログボックスです.AlertDialogはDialogの直接サブクラスです.
AlertDialogを使用すると、タイトル、最大3つのボタン操作、および選択ボックスのセット、または自分で定義したポップアップボックスを表示できます.
ここでandroidの公式ドキュメントから提供された図を借りて、AlertDialogボックスの構成を見てみましょう.
Android UI系列-----Dialog对话框_第1张图片
①領域1は、タイトル名またはアイコンを含むポップアップボックスを定義するヘッダ情報である.
②領域2はAlertDialogダイアログのcontent部分であり、ここではmessage情報を設定したり、選択ボックスのセットを定義したり、独自のレイアウトポップアップボックスを定義したりすることができます.
③エリア3ではActionButtonsセクションを使用します.ここでは操作ボタンを定義できます.
ActionButtonsといえば、ここでは特に注意してください.
AlertDialogでは、定義ボタンはsetXXXXButtonメソッドで作成されます.このうち、3つの異なるアクション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には最大1つしか表示されません.すなわち、ポップアップ・ダイアログ・ボックスには最大1つのPositiveButtonしか表示されません.
次に、いくつかのAlertDialogダイアログボックスを1つの具体的な例で見てみましょう.
1.警告ボックスがポップアップされ、3つのボタンが選択可能
Android UI系列-----Dialog对话框_第2张图片
コードセクションを見てみましょう.
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.ドロップダウンリストポップアップ
Android UI系列-----Dialog对话框_第3张图片
キーコードは次のとおりです.
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 Listenerは、オプションを選択するとダイアログボックスが消えます.ここのwhichはドロップダウンリストの各オプションのインデックスを表しています.これにより、ユーザーが選択したオプションを簡単に得ることができます.

3.ドロップダウン・ラジオ・ボックスをポップアップ
Android UI系列-----Dialog对话框_第4张图片
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.ドロップダウン・ボックスをポップアップ
Android UI系列-----Dialog对话框_第5张图片
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.カスタムポップアップダイアログ
カスタムポップアップダイアログボックスでは、カスタムレイアウトファイルを自分で指定する必要があります.ユーザー名とパスワードを入力する最も簡単な2つのEditTextを指定します.
dialog.xml


    
    
    
    


Android UI系列-----Dialog对话框_第6张图片
キーコード:
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を設定します.
ビュービュー=LayoutInflaterでfrom(MainActivity.this).inflate(R.layout.dialog, null); レイアウトファイルを読み込み、Viewオブジェクトを取得し、AlertDialogを通過することができます.BuilderのsetViewメソッドは、カスタムポップアップボックスを設定します.

 
まとめ:ここまで、基本的にAlertDialogの詳細な説明は終わり、このエッセイは主にDialogポップアップボックスの基本的な概念とAlertDialogというポップアップボックスを詳しく説明し、基本的なポップアップ警告ボックス、ドロップダウンリストボックス、ドロップダウンマルチ選択ボックスなどを定義することを含む.後続のエッセイはAndroidの勉強の少しを記録し続けます.