安卓dialog

安卓系统原生提供了几种类型的对话框供用户选择,同时我们也可以根据自己的需要,创建新的对话框.

一确定取消对话框


        /* 创建对话框构建器对象,类似工厂模式*/
	AlertDialog.Builder builder = new Builder(this);
        /*设置标题和正文*/
    	builder.setTitle("警告");
    	builder.setMessage("若练此功,必先自宫");
        /* 设置确定和取消按钮*/
    	builder.setPositiveButton("现在自宫", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "恭喜你自宫成功,现在程序退出", 0).show();
			}
		});
    	builder.setNegativeButton("下次再说", new OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "若不自宫,一定不成功", 0).show();
			}
		});
        /* 使用构建器创建出对话框对象*/
    	AlertDialog ad = builder.create();
    	ad.show();

二 单选对话框

	final String[] items = new String[]{
    			"男", "女", "其他"
    	};
		//-1表示没有默认选择
		//点击侦听的导包要注意别导错
    	builder.setSingleChoiceItems(items, -1, new OnClickListener() {
			
			//which表示点击的是哪一个选项
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "您选择了" + items[which], 0).show();
				//对话框消失
				dialog.dismiss();
			}
    	});
    	
    	builder.show();

三多选对话框

	AlertDialog.Builder builder = new Builder(this);
    	builder.setTitle("请选择你认为最帅的人");
/* 定义多选的选项,因为可以多选,所以需要一个boolean数组来记录哪些选项被选了*/ 
    	final String[] items = new String[]{
    			"老王",
    			"老K",
    			"老赵",
    			"侃哥"
    	};
		//true表示对应位置的选项被选了
    	final boolean[] checkedItems = new boolean[]{
    			true,
    			false,
    			false,
    			false,
    	};
    	builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {

			//点击某个选项,如果该选项之前没被选择,which用户点击的项目 那么此时isChecked的值为true
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				checkedItems[which] = isChecked;
			}
		});
    	
    	builder.setPositiveButton("确定", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				StringBuffer sb = new StringBuffer();
				for(int i = 0;i < items.length; i++){
					sb.append(checkedItems[i] ? items[i] + " " : "");
				}
				Toast.makeText(MainActivity.this, sb.toString(), 0).show();
			}
		});
    	builder.show();

四 自定义dialog

4.1使用布局页面的dialog,创建一个布局xml文件为dialog1.
  	AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setView(R.layout.dialog1);
        AlertDialog dialog = builder.create();
        dialog.show();
4.2 修改默认弹框的位置等信息,这些修改信息要放在默认dialog的show方法调用之后
//放在show()之后,不然有些属性是没有效果的,比如height和width
Window dialogWindow = dialog.getWindow();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
//设置高度和宽度
p.height = (int) (d.getHeight() * 0.4); // 高度设置为屏幕的0.6
p.width = (int) (d.getWidth() * 0.6); // 宽度设置为屏幕的0.65
//设置位置
p.gravity = Gravity.BOTTOM;
//设置透明度
p.alpha = 0.5f;
dialogWindow.setAttributes(p);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值