Android系统对话框使用详解(最详细)

在实际应用开发中,用到系统对话框中的情况几乎是没有的。按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的。

即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它,下面为大家奉上各种系统对话框的实现。

目录

代码:

 private void showNormalDialog(){
  //创建dialog构造器
  AlertDialog.Builder normalDialog = new AlertDialog.Builder(this);
  //设置title
  normalDialog.setTitle(getString(R.string.dialog_normal_text));
  //设置icon
  normalDialog.setIcon(R.mipmap.ic_launcher_round);
  //设置内容
  normalDialog.setMessage(getString(R.string.dialog_normal_content));
  //设置按钮
  normalDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text),new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog,int which) {
      Toast.makeText(DialogActivity.this,getString(R.string.dialog_btn_confirm_hint_text),Toast.LENGTH_SHORT).show();
      dialog.dismiss();
    }
  });
  //创建并显示
  normalDialog.create().show();
 }

系统对话框都是支持链式调用的,举例:

 new AlertDialog.Builder(this)
      .setTitle(getString(R.string.dialog_normal_text))
      .setIcon(R.mipmap.ic_launcher_round)
      .setMessage(getString(R.string.dialog_normal_content))
      .setPositiveButton(getString(R.string.dialog_btn_confirm_text),new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,int which) {
          Toast.makeText(DialogActivity.this,Toast.LENGTH_SHORT).show();
          dialog.dismiss();
        }
      })
      .create()
      .show();

下面的代码都是可以用链式调用的,这里就不展示了。

2、普通对话框(多按钮)

在系统对话框中最多出现三个按钮,即PositiveButton(确定)、NegativeButton(取消)、NeutralButton(忽略)。

运行截图:

代码:

 /**
  * 普通列表dialog
  */
 private void showListDialog(){
  final String listItems[] = new String[]{"listItems1","listItems2","listItems3","listItems4","listItems5","listItems6"};
  AlertDialog.Builder listDialog = new AlertDialog.Builder(this);
  listDialog.setTitle(getString(R.string.dialog_list_text));
  listDialog.setIcon(R.mipmap.ic_launcher_round);
  /*
    设置item 不能用setMessage()
    用setItems
    items : listItems[] -> 列表项数组
    listener -> 回调接口
  */
  listDialog.setItems(listItems,listItems[which],Toast.LENGTH_SHORT).show();
    }
  });
  //设置按钮
  listDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text),int which) {
          dialog.dismiss();
        }
      });
  listDialog.create().show();
 }

4、单选对话框

运行截图:

代码:

private void showCheckBoxDialog(){
  final String checkBoxItems[] = new String[]{"checkBoxItems1","checkBoxItems2","checkBoxItems3","checkBoxItems4"};
  final boolean isCheck[] = new boolean[]{false,true,false};
  AlertDialog.Builder checkBoxDialog = new AlertDialog.Builder(this);
  checkBoxDialog.setTitle(getString(R.string.dialog_check_box_text));
  checkBoxDialog.setIcon(R.mipmap.ic_launcher_round);
  /*
    设置item 不能用setMessage()
    用setMultiChoiceItems
    items : radioItems[] -> 多选选项数组
    checkItems : isCheck[] -> 是否选中数组
    listener -> 回调接口
  */
  checkBoxDialog.setMultiChoiceItems(checkBoxItems,isCheck,new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog,int which,boolean isChecked) {
      if (isChecked){
        Toast.makeText(DialogActivity.this,checkBoxItems[which] + "  选中",Toast.LENGTH_SHORT).show();
      }else {
        Toast.makeText(DialogActivity.this,checkBoxItems[which] + "  未选中",Toast.LENGTH_SHORT).show();
      }
    }
  });
  //设置按钮
  checkBoxDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text),int which) {
          dialog.dismiss();
        }
      });
  checkBoxDialog.create().show();
 }

6、带输入框的弹窗

运行截图:

布局文件:custom_dialog_layout.xml

  <TextView
      android:id="@+id/dialog_text"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:textSize="15sp"
      android:textColor="@color/colorPrimary"
      android:gravity="center"
      android:padding="12dp"/>
   <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"/>
     <Button
       android:id="@+id/dialog_btn_confirm"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="@color/colorAccent"
       android:textSize="15sp"
       android:text="@string/dialog_btn_confirm_text"
       android:layout_centerHorizontal="true"/>
     <Button
       android:id="@+id/dialog_btn_cancel"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="@color/colorAccent"
       android:textSize="15sp"
       android:text="@string/dialog_btn_cancel_text"
       android:layout_centerHorizontal="true"
       android:layout_alignParentRight="true"/>
   </RelativeLayout>
 </LinearLayout>

代码:

 private void showLayoutDialog() {
  //加载布局并初始化组件
  View dialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog_layout,null);
  TextView dialogText = (TextView) dialogView.findViewById(R.id.dialog_text);
  Button dialogBtnConfirm = (Button) dialogView.findViewById(R.id.dialog_btn_confirm);
  Button dialogBtnCancel = (Button) dialogView.findViewById(R.id.dialog_btn_cancel);
  final AlertDialog.Builder layoutDialog = new AlertDialog.Builder(this);
  layoutDialog.setTitle(getString(R.string.dialog_custom_layout_text));
  layoutDialog.setIcon(R.mipmap.ic_launcher_round);
  layoutDialog.setView(dialogView);
  //设置组件
  dialogText.setText("我是自定义layout的弹窗!!");
  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      Toast.makeText(DialogActivity.this,"我是自定义layout的弹窗!!",Toast.LENGTH_SHORT).show();
    }
  });
  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      layoutDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
          dialog.dismiss();
        }
      });
    }
  });
  layoutDialog.create().show();
 }

以上就是Android系统弹窗的几种实现方式,几乎涵盖了能解决各种简单需求。其中自定义布局的方式奠定了自定义弹窗的基本实现。

二、总结

可以看出上面的几种实现方式都是通过AlertDialog类实现的。有兴趣的可以看Android源码中的AlertDialog类实现。

以上所述是小编给大家介绍的Android系统对话框使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

以上是来客网为你收集整理的Android系统对话框使用详解(最详细)全部内容,希望文章能够帮你解决Android系统对话框使用详解(最详细)所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。