Android系统对话框使用详解(最详细)
这篇文章主要介绍了Android系统对话框使用详解(最详细),需要的朋友可以参考下
在实际应用开发中,用到系统对话框中的情况几乎是没有的。按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的。
即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它,下面为大家奉上各种系统对话框的实现。
目录
代码:
[code] 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(); }[/code]
系统对话框都是支持链式调用的,举例:
[code] 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,getString(R.string.dialog_btn_confirm_hint_text) ,Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .create() .show();[/code]
下面的代码都是可以用链式调用的,这里就不展示了。
2、普通对话框(多按钮)
在系统对话框中最多出现三个按钮,即PositiveButton(确定)、NegativeButton(取消)、NeutralButton(忽略)。
运行截图:
代码:
[code] /** * 普通列表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,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogActivity.this,listItems[which],Toast.LENGTH_SHORT).show(); } }); //设置按钮 listDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text) , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); listDialog.create().show(); }[/code]
4、单选对话框
运行截图:
代码:
[code]private void showCheckBoxDialog(){ final String checkBoxItems[] = new String[]{"checkBoxItems1","checkBoxItems2", "checkBoxItems3","checkBoxItems4"}; final boolean isCheck[] = new boolean[]{false,true,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) , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); checkBoxDialog.create().show(); }[/code]
6、带输入框的弹窗
运行截图:
布局文件:custom_dialog_layout.xml
[code] <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>[/code]
代码:
[code] 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(); }[/code]
以上就是Android系统弹窗的几种实现方式,几乎涵盖了能解决各种简单需求。其中自定义布局的方式奠定了自定义弹窗的基本实现。
二、总结
可以看出上面的几种实现方式都是通过AlertDialog类实现的。有兴趣的可以看Android源码中的AlertDialog类实现。
以上所述是小编给大家介绍的Android系统对话框使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对推扬网www.tuiyang.com网站的支持!
经验分享互联网动态
更多阅读推荐