我的android 第4天 - Dialog

DialogAndroid一种消息提示机制,但需要用户进行确认,比如删除文件提示等,针对手机特点,对话框不易过多

常见对话框

一、标准对话框

二、菜单式对话框

三、复选对话框

四、文本输入对话框

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 学习视频

更多相关文章

  1. android xml常规布局属性
  2. Android(安卓)状态栏透明的一些小结
  3. Android-View-Attribute
  4. Android控件属性大全
  5. android应用安全——(数据抓包)跟踪监控android数据包
  6. Android(安卓)设置投影效果
  7. Android(安卓)TabHost布局
  8. android如何打开系统wifi、蓝牙等设置界面
  9. Android(安卓)绘制2D图形

随机推荐

  1. Android Button 点击时替换背景颜色和替
  2. 做了六年Android,终于熬出头了,15K到31K全
  3. Android屏幕自适应的四种方法
  4. Qt for Android(安卓)拉起微信登录、分享
  5. Android(安卓)API Guides---App Manifest
  6. Android应用优化之内存概念
  7. Android跨进程通信
  8. Delphi XE5 for android 调用Java类库必
  9. Android如何实现ListView的Item松开渐变
  10. android java.lang.SecurityException: P