我的android 第4天 - Dialog
16lz
2021-12-04
我的android 第4天 - Dialog
Dialog是Android一种消息提示机制,但需要用户进行确认,比如删除文件提示等,针对手机特点,对话框不易过多
常见对话框
一、标准对话框
二、菜单式对话框
三、复选对话框
四、文本输入对话框
1、标准对话框实现
•初始化对话框构建器AlertDialog.Builder builder = new AlertDialog.Builder(this);
•设置对话框标题builder.setTitle("提示");
•设置对话框图标builder.setIcon(android.R.drawable.stat_sys_warning);
•设置提示信息 •builder.setMessage("是否要退出?"); •设置积极按钮(左边按钮)、消极按钮(右边按钮)builder.setPositiveButton(R.string.yes, null);
builder.setNegativeButton(R.string.no, null);
•创建及显示对话框 •AlertDialog dialog = builder.create(); •dialog.show()2、单选对话框实现
•buider.setSingleChoiceItems(items, checkedItem, listener) •items:单选项 字符串数组 •checkedItem默认选项 •listener监听3、复选对话框实现
•setMultiChoiceItems(items, checkedItems, listener) •items:复选项字符串数组 •checkedItems 默认选择项boolean数组 •Listener监听4、文本输入对话框
•setView() 设置要显示自定义的view视图 XML文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" android:id="@+id/dialog_layout" > <Button android:id="@+id/normal_dialog_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标准对话框" android:layout_marginTop="20dp" /> <Button android:id="@+id/menu_dialog_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="菜单式对话框" android:layout_marginTop="20dp" /> <Button android:id="@+id/mul_dialog_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="复选对话框" android:layout_marginTop="20dp" /> <Button android:id="@+id/diy_dialog_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义对话框" android:layout_marginTop="20dp" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:background="@drawable/bg_yellow" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#00ff00" android:text="你的籍贯" android:background="@android:color/darker_gray" /> <EditText android:id="@+id/from_edt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" > <requestFocus /> </EditText></LinearLayout>java代码
package cn.itcast.dialog;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnMultiChoiceClickListener;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.Toast;public class DialogActivity extends Activity implements OnClickListener {Context context;// 上下文对象@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);context = this;//Button button = (Button) findViewById(R.id.normal_dialog_btn);//// 添加标准对话框按钮//button.setOnClickListener(this);//button = (Button) findViewById(R.id.menu_dialog_btn);//// 添加的菜单式的对话框按钮//button.setOnClickListener(this);//button = (Button) findViewById(R.id.mul_dialog_btn);//// 添加复选对话框按钮//button.setOnClickListener(this);//通过ViewGroup获取子控件来绑定监听LinearLayout layout=(LinearLayout) findViewById(R.id.dialog_layout);//for循环,必须这样写,达到优化的目的int childCount=layout.getChildCount();for(int i=0;i<childCount;i++){View view=layout.getChildAt(i);//对view添加监听view.setOnClickListener(this);}}// 构建一个监听器,成员变量DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {switch (which) {case -1:Toast.makeText(context, "你按下左边按钮", Toast.LENGTH_SHORT).show();break;case -2:Toast.makeText(context, "你按下右边按钮", Toast.LENGTH_SHORT).show();default:break;}}};@Overridepublic void onClick(View v) {//显示对话框showDialog(v.getId());//switch (v.getId()) {//case R.id.normal_dialog_btn:////系统提供的一个显示对话框的方法//showDialog(0);////normalDialog();//break;//case R.id.menu_dialog_btn://showDialog(1);////menuDialog();//break;//case R.id.mul_dialog_btn://showDialog(2);////mulDialog();//break;////default://break;//}}@Overrideprotected Dialog onCreateDialog(int id) {AlertDialog dialog=null;switch (id) {case R.id.normal_dialog_btn:AlertDialog.Builder builder = new AlertDialog.Builder(context);// 设置对话框的图标builder.setIcon(R.drawable.ic_bomb);// 设置对话框的标题builder.setTitle("标准对话框");// 设置对话框的提示内容builder.setMessage("你真的不理我了吗");// 积极的按钮 放在左边builder.setPositiveButton(R.string.confirm, listener);// 消极的按钮,放在右边builder.setNegativeButton(R.string.cancel, listener);// 通过构建器创建对话框dialog = builder.create();break;case R.id.menu_dialog_btn:final String[] option = getResources().getStringArray(R.array.weather);dialog=new AlertDialog.Builder(context).setIcon(R.drawable.ic_weather).setTitle("菜单式对话框").setItems(option, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, option[which],Toast.LENGTH_SHORT).show();}}).create();break;case R.id.mul_dialog_btn:final String[] items = getResources().getStringArray(R.array.food);dialog=new AlertDialog.Builder(context).setIcon(R.drawable.ic_berry).setTitle("你喜欢的食物").setMultiChoiceItems(items, null, new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {Toast.makeText(context,items[which]+isChecked, Toast.LENGTH_SHORT).show();}}).setPositiveButton(R.string.confirm, listener).setNegativeButton(R.string.cancel, listener).create();break;case R.id.diy_dialog_btn://通过LayoutInflater初始化xml文件转换为View对象View view=LayoutInflater.from(context).inflate(R.layout.diy_dialog, null);//final EditText from=(EditText)view.findViewById(R.id.from_edt);dialog=new AlertDialog.Builder(context).setIcon(R.drawable.ic_berry).setTitle("请输入你的籍贯").setView(view).setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,from.getText().toString(), Toast.LENGTH_SHORT).show();}}).setNegativeButton(R.string.cancel, listener).create();break;default:break;}System.out.println("dialog对象通过缓存"+dialog);return dialog;} /** * 复选对话框实现 */private void mulDialog() {final String[] items = getResources().getStringArray(R.array.food);AlertDialog.Builder builder = new AlertDialog.Builder(context);//链式编程builder.setIcon(R.drawable.ic_berry).setTitle("你喜欢的食物").setMultiChoiceItems(items, null, new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {Toast.makeText(context,items[which]+isChecked, Toast.LENGTH_SHORT).show();}}).setPositiveButton(R.string.confirm, listener).setNegativeButton(R.string.cancel, listener).create().show();}/** * 菜单式对话框的显示方法 */private void menuDialog() {final String[] option = getResources().getStringArray(R.array.weather);AlertDialog.Builder builder = new AlertDialog.Builder(context);//链式编程builder.setIcon(R.drawable.ic_weather).setTitle("菜单式对话框").setItems(option, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, option[which],Toast.LENGTH_SHORT).show();}}).create().show();}/* * 标准对话框的实现方法 */private void normalDialog() {// 初始化对话框的构建器AlertDialog.Builder builder = new AlertDialog.Builder(context);// 设置对话框的图标builder.setIcon(R.drawable.ic_bomb);// 设置对话框的标题builder.setTitle("标准对话框");// 设置对话框的提示内容builder.setMessage("你真的不理我了吗");// 积极的按钮 放在左边builder.setPositiveButton(R.string.confirm, listener);// 消极的按钮,放在右边builder.setNegativeButton(R.string.cancel, listener);// 通过构建器创建对话框AlertDialog dialog = builder.create();// 显示对话框//System.out.println("dialog对象"+dialog.toString());dialog.show();}}
效果我就不去演示了,有兴趣自己去试试吧 android 学习视频
更多相关文章
- android xml常规布局属性
- Android(安卓)状态栏透明的一些小结
- Android-View-Attribute
- Android控件属性大全
- android应用安全——(数据抓包)跟踪监控android数据包
- Android(安卓)设置投影效果
- Android(安卓)TabHost布局
- android如何打开系统wifi、蓝牙等设置界面
- Android(安卓)绘制2D图形