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

Doalog:

  •         Dialog基本方法:
    • setPrompt:设置标题文字。
    • setAdapter:设置下拉列表的适配器。
    • setSelection:设置当前选中哪项。注意该方法要在setAdapter方法之后调用。
    • setOnItemSelectedListener:设置下拉列表的选择监听器,该监听器要实现接口OnItemSelectedListener      
  • spinner的用法:

    •  通过xml文件加载(静态)
      • 通过java代码加载(动态)
  • 通过XML文件静态加载
    • 文件位置:res/values/String.xml
      • 在xml布局文件中的android:entries=“country_array”使用
        <resources>
         
            <string name="app_name">选择一个国家</string>
            <string name="country_prompt">Choose a country</string>
         
            <string-array name="country_arrays">
                <item>China</item>
                <item>United States</item>
                <item>Indonesia</item>
                <item>France</item>
                <item>Italy</item>
                <item>Singapore</item>
                <item>New Zealand</item>
                <item>India</item>
            </string-array>
        
        
        
        
        定义完以后,在xml布局文件中使用
            使用的方法为:
        <LinearLayout>
                        <Spinner
                android:id="@+id/spinner1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:entries="@array/country_arrays"
                android:prompt="@string/country_prompt" />
        </LinearLayout>
                            
        

  •   通过java代码实现动态加载(需要使用ArrayAdapter适配器)
    •        在xml布局文件中
      •   <Spinner
                android:layout_width="200dp"
                android:id="@+id/spinner"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:spinnerMode="dropdown"
                android:dropDownVerticalOffset="45dp"
                android:background="@null"/>
        
                   
    • 在java代码中:
  • 首先需要一个一个数组用来存放下拉列表需要展示的内容
        private String[] starArray = {"金","木","水","火","土"};
    2.声明适配器:
        ArrayAdapter<String> starAdapter = new ArrayAdapter<String(String为引用的数据的数据类型)>
    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. <style name="NormalDialogStyle">
                <!--对话框背景 -->
                <item name="android:windowBackground">@android:color/transparent</item>
                <!--边框 -->
                <item name="android:windowFrame">@null</item>
                <!--没有标题 -->
                <item name="android:windowNoTitle">true</item>
                <!-- 是否浮现在Activity之上 -->
                <item name="android:windowIsFloating">true</item>
                <!--背景透明 -->
                <item name="android:windowIsTranslucent">false</item>
                <!-- 是否有覆盖 -->
                <item name="android:windowContentOverlay">@null</item>
                <!--进出的显示动画 -->
                <item name="android:windowAnimationStyle">@style/normalDialogAnim</item>
                <!--背景变暗-->
                <item name="android:backgroundDimEnabled">true</item>
            </style>
            <!--对话框动画-->
            <style name="normalDialogAnim" parent="android:Animation">
                <item name="@android:windowEnterAnimation">@anim/normal_dialog_enter</item>
                <item name="@android:windowExitAnimation">@anim/normal_dialog_exit</item>
            </style>
        

        在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();
              }
          

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值