关闭

安卓自定义对话框(位置和大小)

589人阅读 评论(0) 收藏 举报
分类:

安卓自定义对话框(位置和大小)


		//自定义对话框
		private void showCustomDialog(String msgStr){
			try {
				//使用AlterDialog
				LinearLayout view = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.dlg_layout, null);
				final TextView msg = (TextView) view.findViewById(R.id.dlg_msg);
				final TextView cancel = (TextView) view.findViewById(R.id.dlg_cancel);
				final TextView confirm = (TextView) view.findViewById(R.id.dlg_confirm);

				msg.setText(msgStr);
				AlertDialog.Builder builder = new AlertDialog.Builder(context);
				final AlertDialog dialog = builder.create();
				dialog.setCancelable(false);
				dialog.setCanceledOnTouchOutside(false);
				dialog.show();

				Window window = dialog.getWindow();
				//设置显示位置
				WindowManager.LayoutParams lp = window.getAttributes();
				//不设置lp.width 和lp.height,对话框大小由布局决定
//				lp.width = 525; //大小
//				lp.height =330;

				//自定义位置
				lp.x = 30; 
				lp.y = 30;
				lp.gravity = Gravity.LEFT | Gravity.TOP;//不设置这个时,lp.x和lp.y无效
				
			    //window.setGravity(Gravity.CENTER);//居中显示
				window.setAttributes(lp);
				window.setContentView(view);


				final Dialog dialog2 = dialog;
				cancel.setOnClickListener(new View.OnClickListener() {
					@Override
					public void onClick(View v) {
						try {
							if(dialog2 != null){
								dialog2.dismiss();
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
				confirm.setOnClickListener(new View.OnClickListener() {
					public void onClick(View arg0) {
						try{
							Toast.makeText(DownLoadActivity.this, "确认", Toast.LENGTH_SHORT).show();
							if(dialog2 != null){
								dialog2.dismiss();
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
lp.x的英文注释:		
X position for this window. With the default gravity it is ignored. When using Gravity.LEFT or Gravity.START or Gravity.RIGHT or Gravity.END it provides an offset from the given edge
由With the default gravity it is ignored可知,当使用对话框默认的Gravity时,lp.x和lp.y设置了也无效。		
注意:lp.x与lp.y表示相对于原始位置的偏移.
          当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略.
          当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略.
          当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略.
          当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略.
          当参数值包含Gravity.CENTER_HORIZONTAL时,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动.
          当参数值包含Gravity.CENTER_VERTICAL时,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动.
          gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL.
          
        

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:38466次
    • 积分:767
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:15篇
    • 译文:1篇
    • 评论:6条
    联系方式
    如果需要联系我,请加QQ群: 259047275. 个人QQ就不写在上面了!
    文章分类
    最新评论