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

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


		//自定义对话框
		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.
          
        

阅读更多
个人分类: android 安卓_UI
上一篇Android Sqlite数据库的升级(二)
下一篇ImageButton和Button不设置点击事件也会拦截父View的点击事件
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭