Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)

1.回顾

   上篇 学习了 Toast的使用,包括其自定义

2.重点

  (1)对话框的实现
  (2)普通对话框
  (3)单选对话框
  (4)多选对话框
  (5)列表对话框
  (6)自定义布局对话框
  (7)Activity实现 对话框
  (8)DialogInterface.OnClickListener 处理返回值

3.普通对话框

  3.1 效果图


                                                                

   3.2 实现

    (1)实现确定按钮监听(DialogInterface.OnClickListener 
//两个事件 : 确定监听
	class DialogSureClickListener implements DialogInterface.OnClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which) {
			// 判断 点击的是什么按钮
				dialog.dismiss();
				Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();
				tv_result.setText("点击了确定按钮");
		}
		
	}


    (2)实现取消按钮监听(DialogInterface.OnClickListener 
//取消监听
	class DialogCanelClickListener implements DialogInterface.OnClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which) {
			     // 判断 点击的是什么按钮
				dialog.dismiss();
				Toast.makeText(MainActivity.this,"点击了取消按钮",Toast.LENGTH_SHORT).show();
				tv_result.setText("点击了取消按钮");
			
		}
		
	}


    (3)dialog 实现
/**
	 * 普通的dialog
	 */
	private void ShowPuTongDialog(){
		
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("普通Dialog");
		builder.setIcon(R.drawable.img);
		builder.setMessage("Hi,我是 普通 Dialog");
		builder.setPositiveButton("确定",new DialogSureClickListener());
		builder.setNegativeButton("取消",new DialogCanelClickListener());
		AlertDialog dialog= builder.create();
		dialog.show();
		
	}
	

4.单选按钮对话框

    4.1 效果图

                                                                

    4.2实现

      (1)准备数据源
	//准备数据源
	private String[] items={"儿童","少年","青年","成年","大叔","老头"};


      (2)实现点击监听(DialogInterface.OnClickListener 
//监听事件
	class DialogsingleClickListener implements DialogInterface.OnClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which) {
			// 判断 单选按钮
			Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();
			tv_result.setText(items[which]);
			dialog.dismiss();
		}
		
	}
	


      (3)dialog实现

/**
	 * 单选按钮对话框
	 */
	private void ShowSingleDialog(){
		
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("单选按钮对话框");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setSingleChoiceItems(items,0,new DialogsingleClickListener());
		AlertDialog dialog=builder.create();
		dialog.show();
	}
	


5.多选按钮对话框

    5.1 效果图

                                                                

    5.2 实现

    (1)准备数据源
//数据源
	private String[] items1={"儿童","少年","青年","成年","大叔","老头"};


    (2)多选监听事件(DialogInterface.OnMultiChoiceClickListener
//多选监听事件
	class DialogMuitlClickListener implements DialogInterface.OnMultiChoiceClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which, boolean isChecked) {
			// OnMultiChoiceClickListener
			if(isChecked){
				Toast.makeText(MainActivity.this,items1[which],Toast.LENGTH_SHORT).show();
				tv_result.setText(tv_result.getText().toString()+items1[which]);
			}
		}
	}


    (3)按钮监听事件(DialogInterface.OnClickListener)
// 确定 监听事件
	class DialogMuitlSureClickListener implements DialogInterface.OnClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which) {
			// 关闭 Dialog
			dialog.dismiss();
		}
		
	}


    (4)Dialog 实现
/**
	 * 多选按钮 对话框
	 */
	private void ShowMuitlDialog(){
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("多选按钮对话框");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setMultiChoiceItems(items, null,new DialogMuitlClickListener());
		builder.setPositiveButton("确定",new DialogMuitlSureClickListener());
		AlertDialog dialog=builder.create();
		dialog.show();
	}


6.列表对话框

   6.1 效果图

                                                                

   6.2 实现

        (1)准备数据源
//设置数据源
	private String[] items2={"儿童","少年","青年","成年","大叔","老头"};


        (2)设置监听事件(DialogInterface.OnClickListener)
// list 监听事件
	class DialoglistClickListener implements DialogInterface.OnClickListener{

		@Override
		public void onClick(DialogInterface dialog, int which) {
			
			Toast.makeText(MainActivity.this,items2[which],Toast.LENGTH_SHORT).show();
			tv_result.setText(items2[which]);
			// 关闭 Dialog
			dialog.dismiss();
		}
		
	}


        (3)Dialog实现
/**
	 * list 对话框实现
	 */
	private void ShowListDialog(){
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("list对话框");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setItems(items2, new DialoglistClickListener());
		AlertDialog dialog=builder.create();
		dialog.show();
	}
	

7.自定义对话框

      7.1效果图

                                                               

    7.2 实现

    (1)新建Layout布局
             实现 一个图片,一个输入框,一个按钮
<?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:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/img" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/btn_tijiao"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交数据" />

</LinearLayout>

    (2)Dialog实现
            这里也使用到了 将布局 转为 view对象 ,目前 有两种方法 可以将 Layout布局转 View对象;
	private EditText editText1;
	private AlertDialog selfdialog;
	/**
	 * 自定义布局 的dialog 包括 取代 dialog中的值
	 */
	private void ShowSelfDialog(){
		//将 layout布局  转为 view对象
		LayoutInflater inflater=getLayoutInflater().from(this);
		View view=inflater.inflate(R.layout.dialog_layout,null);
		
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("自定义对话框");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setView(view);
		selfdialog=builder.create();
		selfdialog.show();
		
		//取得 dialog中的值
		Button btn_tijiao=(Button) view.findViewById(R.id.btn_tijiao);
		editText1=(EditText) view.findViewById(R.id.editText1);
		btn_tijiao.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// 取得 dialog 中的值
				tv_result.setText("自定义 Dialog中取得值:"+editText1.getText().toString());
				selfdialog.dismiss();
			}
		});
		
		
	}


8.Activity 对话框

  8.1效果图

         没有优化,就这样了!
                                                                

    8.2 实现

       (1)新建Activity 
       (2)设置主题
              打开 Androidmainfest.xml ,找到刚刚新建的Activity 设置主题 theme
<activity
            android:name=".DialogActivity"
            android:theme="@android:style/Theme.Dialog"
            android:label="@string/title_activity_dialog" >
        </activity>
      (3)设置布局 和 上面 自定义布局一样 (可以直接使用)
      (4)初始化控件 实现 按钮点击事件
                 这里说明一下,因为需要 回调 传值,故使用了 setResult ;
class  btn_tijiaoClickListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// 按钮点击事件 ,给 mainActivity 回传输入的值
			Intent intent=new Intent();
			intent.putExtra("data",edittext1.getText().toString());
			setResult(1,intent);
			//结束 Activity dialog
			finish();
		}
		
	}

       (5)MainActivity 重写 onActivityResult 回调 拿值
/**
	 * 重写 onActivityResult 方法 拿到 回调的值
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//回调拿值
		if(resultCode==1&&requestCode==2){
			tv_result.setText(data.getStringExtra("data"));
		}
	}
	



       (6)启动使用 startActivityforResult () 方法
Intent intent=new Intent(MainActivity.this,DialogActivity.class);
            startActivityForResult(intent, 2);

     8.3 不懂得 可以看我的博客


9.demo 免积分下载



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值