栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Dialog对话框。Spinner下拉框,Dialog对话框,超级详细解答!!!!!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dialog对话框。Spinner下拉框,Dialog对话框,超级详细解答!!!!!

Doalog:
  •         Dialog基本方法:
    • setPrompt:设置标题文字。
    • setAdapter:设置下拉列表的适配器。
    • setSelection:设置当前选中哪项。注意该方法要在setAdapter方法之后调用。
    • setOnItemSelectedListener:设置下拉列表的选择监听器,该监听器要实现接口OnItemSelectedListener      
  • spinner的用法:
    •  通过xml文件加载(静态)
      • 通过java代码加载(动态)
  • 通过XML文件静态加载
    • 文件位置:res/values/String.xml
      • 在xml布局文件中的android:entries=“country_array”使用
        
         
            选择一个国家
            Choose a country
         
            
                China
                United States
                Indonesia
                France
                Italy
                Singapore
                New Zealand
                India
            
        
        
        
        
        定义完以后,在xml布局文件中使用
            使用的方法为:
        
                        
        
                            
        

  •   通过java代码实现动态加载(需要使用ArrayAdapter适配器)
    •        在xml布局文件中
      •   
        
                   
    • 在java代码中:
  • 首先需要一个一个数组用来存放下拉列表需要展示的内容
        private String[] starArray = {"金","木","水","火","土"};
    2.声明适配器:
        ArrayAdapter starAdapter = new ArrayAdapter
    3.      //设置数组适配器的布局样式
            starAdapter.setDropDownViewResource(R.layout.item_dropdown);
            //从布局文件中获取名叫sp_dialog的下拉框
            Spinner sp = findViewById(R.id.spinner);
            //设置下拉框的标题,不设置就没有难看的标题了
            sp.setPrompt("请选择行星");
            //设置下拉框的数组适配器
            sp.setAdapter(starAdapter);
            //设置下拉框默认的显示第一项
            sp.setSelection(0);
            //给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法
            sp.setOnItemSelectedListener(new MySelectedListener());
    
    Dialog对话框基本有以下几种
    1. 普通对话框

      1.      AlertDialog dialog = new AlertDialog.Builder(this)
                        .setIcon(R.mipmap.icon)//设置标题的图片
                        .setTitle("我是对话框")//设置对话框的标题
                        .setMessage("我是对话框的内容")//设置对话框的内容
                        //设置对话框的按钮
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "点击了确定的按钮", Toast.LENGTH_SHORT).show();
                                dialog.dismiss();
                            }
                        }).create();
                dialog.show()
        

    2. 列表对话框

      1.  final String items[] = {"我是Item一", "我是Item二", "我是Item三", "我是Item四"};
                AlertDialog dialog = new AlertDialog.Builder(this)
                        .setIcon(R.mipmap.icon)//设置标题的图片
                        .setTitle("列表对话框")//设置对话框的标题
                        .setItems(items, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        }).create();
                dialog.show();
        

        只需要调用.setItems()即可,第一个参数即要显示item的数组,第二个参数也就是点击item后的监听事件就很好解决啦

    1. 单选列表对话框

      1. final String items[] = {"我是Item一", "我是Item二", "我是Item三", "我是Item四"};
                AlertDialog dialog = new AlertDialog.Builder(this)
                        .setIcon(R.mipmap.icon)//设置标题的图片
                        .setTitle("单选列表对话框")//设置对话框的标题
                        .setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        }).create();
                dialog.show();
        

        .setSingleChoiceItems(items, 1, listener)第一个参数:设置单选内容的资源来源;第二个参数:设置默认选中哪一项。

    2. 多选列表对话框

      1. final String items[] = {"我是Item一", "我是Item二", "我是Item三", "我是Item四"};
                final boolean checkedItems[] = {true, false, true, false};
                AlertDialog dialog = new AlertDialog.Builder(this)
                        .setIcon(R.mipmap.icon)//设置标题的图片
                        .setTitle("多选对话框")//设置对话框的标题
                        .setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                checkedItems[which] = isChecked;
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                for (int i = 0; i < checkedItems.length; i++) {
                                    if (checkedItems[i]) {
                                        Toast.makeText(MainActivity.this, "选中了" + i, Toast.LENGTH_SHORT).show();
                                    }
                                }
                                dialog.dismiss();
                            }
        ​
                        }).create();
        ​
                dialog.show();
        

        同样,和单元对话框一样.setMultiChoiceItems(items, checkedItems, listener)

        //第一个参数设置的是你需要单选的内容来源,第二个参数设置的是默认选红的选项,因为是多选,所以可以使用数组来指定

    3. 半自定义对话框

      1. 半自定义的话我们课时使用.setView函数

        View view = getLayoutInflater().inflate(R.layout.half_dialog_view, null);
                final EditText editText = (EditText) view.findViewById(R.id.dialog_edit);
                AlertDialog dialog = new AlertDialog.Builder(this)
                        .setIcon(R.mipmap.icon)//设置标题的图片
                        .setTitle("半自定义对话框")//设置对话框的标题
                        .setView(view)
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                String content = editText.getText().toString();
                                Toast.makeText(MainActivity.this, content, Toast.LENGTH_SHORT).show();
                                dialog.dismiss();
                            }
                        }).create();
                dialog.show();
        

        需要注意的是:找自己布局中的控件时候经常报NullpointException,原因也很简单就是没有使用加载的布局.findViewbyId();

    4. 自定义对话框

      1. 
            
            
        

        在java中的实现:

        1.  private void customDialog() {
                  final Dialog dialog = new Dialog(this, R.style.NormalDialogStyle);
                  View view = View.inflate(this, R.layout.dialog_normal, null);
                  TextView cancel = (TextView) view.findViewById(R.id.cancel);
                  TextView confirm = (TextView) view.findViewById(R.id.confirm);
                  dialog.setContentView(view);
                  //使得点击对话框外部不消失对话框
                  dialog.setCanceledOnTouchOutside(true);
                  //设置对话框的大小
                  view.setMinimumHeight((int) (ScreenSizeUtils.getInstance(this).getScreenHeight() * 0.23f));
                  Window dialogWindow = dialog.getWindow();
                  WindowManager.LayoutParams lp = dialogWindow.getAttributes();
                  lp.width = (int) (ScreenSizeUtils.getInstance(this).getScreenWidth() * 0.75f);
                  lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
                  lp.gravity = Gravity.CENTER;
                  dialogWindow.setAttributes(lp);
                  cancel.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          dialog.dismiss();
                      }
                  });
                  confirm.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          dialog.dismiss();
                      }
                  });
                  dialog.show();
              }
          

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号