android安卓之常用对话框设计AlertDialog

android安卓之常用对话框设计AlertDialog

学习目的:掌握常用对话框中提示,单选,复选,自定义对话框的设计和使用。

image-20220330160009479

布局文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你的选择是:" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/tip_btn"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="提示对话框" />

        <Button
            android:id="@+id/tip2_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="自定义提示对话框" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/radio_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="单选对话框" />

        <Button
            android:id="@+id/mul_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="多选对话框" />
    </LinearLayout>

</LinearLayout>

MainActivity文件

提示

当点击“提示对话框”时,显示内容如下,当点击确定时,文本显示内容为“你的选择是确定”,反之文本内容显示为“你的选择是取消”。

image-20220330160958893

tip_btn.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View view) {
    
    
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setTitle("注意");
                builder.setMessage("你确定要退出吗");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        tv.setText("你的选择是确定");
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        tv.setText("你的选择是取消");
                    }
                });
                builder.create();
                builder.show();
            }
        });

自定义

当点击“自定义提示对话框”时,显示登录界面,如下图左边,点击确定后效果显示如右边。

image-20220330161145615

登录界面的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名" />
    <EditText
        android:id="@+id/pass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码" />
</LinearLayout>

点击事件方法

需要我们了解的是

LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.login_dialog,null);这两句是把另一个登录界面引入到事件中。后通过

builder.setView(layout);来显示登录的布局文件。


tip2_btn.setOnClickListener(new View.OnClickListener() {
    
    
    @Override
    public void onClick(View view) {
    
    
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        LayoutInflater inflater=getLayoutInflater();
        View layout=inflater.inflate(R.layout.login_dialog,null);
        final EditText etName,etPass;
        etName=layout.findViewById(R.id.name);
        etPass=layout.findViewById(R.id.pass);
        builder.setView(layout);
        builder.setTitle("登录");
        builder.setIcon(R.mipmap.ic_launcher);

        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
    
                String name=etName.getText().toString().trim();
                String pass=etPass.getText().toString().trim();
                tv.setText("你的用户名是"+name+",你的密码是"+pass);
            }
        });
        builder.setNegativeButton("取消",null);
        builder.create();
        builder.show();
    }
});

单选

当点击“单选对话框”时,显示效果如下图左边,选择某个选项后,显示效果如右边。

image-20220330163250881

radio_btn.setOnClickListener(new View.OnClickListener() {
    
    
    String[] items = new String[] {
    
    "信管专业","计科专业","软工专业"};
    int choose=0;
    @Override
    public void onClick(View view) {
    
    
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("选择专业");
        builder.setCancelable(false);
        builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
    
                choose=i;
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
    
                tv.setText("你的专业是"+items[choose]);
            }
        });
        builder.setNegativeButton("取消",null);
        builder.create();
        builder.show();
    }
});

多选

当点击“多选对话框”时,显示效果如下图左边,选择某个选项后,显示效果如右边。

image-20220330163351104

mul_btn.setOnClickListener(new View.OnClickListener() {
    
    
    String[] place = new String[] {
    
    "北京","上海","纽约","巴黎"};
    boolean[] check=new boolean[] {
    
    false,true,true,false};
    @Override
    public void onClick(View view) {
    
    
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setTitle("请选择你去过的城市");
        builder.setMultiChoiceItems(place, check, new DialogInterface.OnMultiChoiceClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
    
    
                check[i]=b;
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
    
                StringBuilder stringBuilder=new StringBuilder("你去过的城市有:");
                for (int j=0; j<place.length ;j++){
    
    
                    if (check[j]==true){
    
    
                        stringBuilder.append(place[j]).append("\t");
                    }
                }
                tv.setText(stringBuilder.toString());
            }
        });
        builder.setNegativeButton("取消",null);
        builder.create();
        builder.show();
    }
});

最后附上全的main文件

public class MainActivity extends AppCompatActivity {
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button tip_btn=findViewById(R.id.tip_btn);
        Button tip2_btn=findViewById(R.id.tip2_btn);
        Button radio_btn=findViewById(R.id.radio_btn);
        Button mul_btn=findViewById(R.id.mul_btn);
        final TextView tv = findViewById(R.id.tv);

        tip_btn.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View view) {
    
    
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setTitle("注意");
                builder.setMessage("你确定要退出吗");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        tv.setText("你的选择是确定");
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        tv.setText("你的选择是取消");
                    }
                });
                builder.create();
                builder.show();
            }
        });

        tip2_btn.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View view) {
    
    
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                LayoutInflater inflater=getLayoutInflater();
                View layout=inflater.inflate(R.layout.login_dialog,null);
                final EditText etName,etPass;
                etName=layout.findViewById(R.id.name);
                etPass=layout.findViewById(R.id.pass);
                builder.setView(layout);
                builder.setTitle("登录");
                builder.setIcon(R.mipmap.ic_launcher);

                builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        String name=etName.getText().toString().trim();
                        String pass=etPass.getText().toString().trim();
                        tv.setText("你的用户名是"+name+",你的密码是"+pass);
                    }
                });
                builder.setNegativeButton("取消",null);
                builder.create();
                builder.show();
            }
        });
        radio_btn.setOnClickListener(new View.OnClickListener() {
    
    
            String[] items = new String[] {
    
    "信管专业","计科专业","软工专业"};
            int choose=0;
            @Override
            public void onClick(View view) {
    
    
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setTitle("选择专业");
                builder.setCancelable(false);
                builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        choose=i;
                    }
                });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        tv.setText("你的专业是"+items[choose]);
                    }
                });
                builder.setNegativeButton("取消",null);
                builder.create();
                builder.show();
            }
        });
        mul_btn.setOnClickListener(new View.OnClickListener() {
    
    
            String[] place = new String[] {
    
    "北京","上海","纽约","巴黎"};
            boolean[] check=new boolean[] {
    
    false,true,true,false};
            @Override
            public void onClick(View view) {
    
    
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setTitle("请选择你去过的城市");
                builder.setMultiChoiceItems(place, check, new DialogInterface.OnMultiChoiceClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
    
    
                        check[i]=b;
                    }
                });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
    
    
                        StringBuilder stringBuilder=new StringBuilder("你去过的城市有:");
                        for (int j=0; j<place.length ;j++){
    
    
                            if (check[j]==true){
    
    
                                stringBuilder.append(place[j]).append("\t");
                            }
                        }
                        tv.setText(stringBuilder.toString());
                    }
                });
                builder.setNegativeButton("取消",null);
                builder.create();
                builder.show();
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/shgzzd/article/details/123850112