前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android-弹窗AlterDialog对话框使用全解析

Android-弹窗AlterDialog对话框使用全解析

作者头像
圆号本昊
发布2021-09-24 14:41:03
1.8K0
发布2021-09-24 14:41:03
举报
文章被收录于专栏:github@hornhuang

主要方法:

setMessage()

设置对话框内容为简单文本

setItems()

对话款内容为简单列表项

setSingleChoiceItems()

对话框内容为单选列表项

setMultiChoiceItems()

对话款内容为多选列表项

setAdapter()

内容为自定义列表项

setView()

内容为自定义view


六种样式分析:

  1. 显示消息提示的对话框(例如:是否确认关闭)
  2. 简单列表对话框
  3. 单选列表对话框
  4. 多选列表对话框
  5. 自定义对标对话框
  6. 自定义View对话框

注:按钮的点击事件在 MainActivity 中声明 MainActivity的 XML 在文末给出

一、显示消息提示的对话框

效果:

实现方法:

建立 FirstService类 用于写静态方法

代码语言:javascript
复制
public class FirstService  extends MainActivity{
    public static void simple(View scource ){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
                .setTitle("你好呀~")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setMessage("the sentences you want to say");

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }
    private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

在MainActivity中调用该方法:

代码语言:javascript
复制
public class MainActivity extends Activity {
    public static MainActivity mMainActivity;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mMainActivity = this;
    }
    public void send(View source){
        FirstService.simple(getWindow().getDecorView());
    }
}

二、列表项对话框

// 由于Dialog 本身原因 选完后 dialog会自动关闭 如果不想自动关闭,可以:不关闭方法

效果:

具体实现:

代码语言:javascript
复制
public class FirstService  extends MainActivity{
    private static String[] items = new String[]{
            "I believe I can fly",
            "Sunshine brightly",
            "I love study Java",
            "Wiw cool Dialog",
    };
    public static void simple(View scource ){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
                .setTitle("set your list Dialog's title here")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.mMainActivity,"you click '" + items[which] + "' button ",Toast.LENGTH_SHORT).show();
                        return;
                    }
                });

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }
    private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
                return;
            }
        });
    }
}

主活动中调用方法与(一)中类似,这里就不给出了了


三、单选列表对话框

具体调用方法:

代码语言:javascript
复制
public static void simple(View scource ){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
                .setTitle("单选列表对话框")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.mMainActivity,"you click '" + items[which] + "' button ",Toast.LENGTH_SHORT).show();
                    }
                });

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }

其他部分代码与 二 中相同,这里就不在给出


四、多选列表对话框

效果:

具体实现方法:

这里为了传送数据 判断用户选了哪些选项 setPositiveButton 进行了修改

代码语言:javascript
复制
public class FirstService  extends MainActivity{
    private static String[] items = new String[]{
            "I believe I can fly",
            "Sunshine brightly",
            "I love study Java",
            "Wiw cool Dialog",
    };
    private static boolean[] multiDialog = new boolean[]{false , true , false , true};
    public static void simple(View scource ){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
                .setTitle("单选列表对话框")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setMultiChoiceItems(items, multiDialog ,null);

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }
    private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                for ( int i = 0 ; i < items.length ; i++ ){
                    if (multiDialog[i]){
                        Toast.makeText(MainActivity.mMainActivity,"you click '"  + items[i] +  "' button ",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }

    private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
                return;
            }
        });
    }
}

调用方法在 一 中给出 这里不在给出


五、自定义列表项对话框

效果:

简单实现:

代码语言:javascript
复制
public class FirstService  extends MainActivity{
    private static String[] items = new String[]{
            "I believe I can fly",
            "Sunshine brightly",
            "I love study Java",
            "Wiw cool Dialog",
    };
    public static void simple(View scource ){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.mMainActivity)
                .setTitle("单选列表对话框")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setAdapter(new ArrayAdapter(mMainActivity,R.layout.cell,items),null);

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }
    private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'yes' button ",Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
                return;
            }
        });
    }
}

附上 /layout/cell 布局文件

代码语言:javascript
复制

六、自定义 View 对话框

效果:

具体实现方法:

代码语言:javascript
复制
public class FirstService  extends MainActivity{
    private static TableLayout tableLayout;
    public static void simple(View scource ){
        tableLayout = (TableLayout) mMainActivity.getLayoutInflater().inflate(R.layout.cell,null);
        AlertDialog.Builder builder = new AlertDialog.Builder(mMainActivity)
                .setTitle("单选列表对话框")//设置对话框 标题
                .setIcon(R.drawable.seek02)//设置图标
                .setView(tableLayout);

        setPositiveButton(builder);//add 'yes' Button to AlertDialog
        setNegativeButton(builder)//add 'no' Button to AlertDialog
                .create()
                .show();
    }
    private static AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //do login operations here
                Toast.makeText(MainActivity.mMainActivity,"you info:" + tableLayout.toString(),Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder){
        // use 'setPositiveButton' method to add 'yes' Button
        return builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //do nothing here
                Toast.makeText(MainActivity.mMainActivity,"you click 'no' button ",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

最后给出 cell.xml 布局:

代码语言:javascript
复制

最后给出 MainActivity的布局文件:

代码语言:javascript
复制

可以看到 Button中 android:onClick="send"声明了 它的点击事件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/12/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要方法:
  • 六种样式分析:
  • 注:按钮的点击事件在 MainActivity 中声明 MainActivity的 XML 在文末给出
  • 一、显示消息提示的对话框
  • 二、列表项对话框
    • 效果:
      • 三、单选列表对话框
        • 四、多选列表对话框
          • 五、自定义列表项对话框
            • 六、自定义 View 对话框
              • 最后给出 MainActivity的布局文件:
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档