今天用到的自定义dialog有两种方式。但是改变宽和高费了半天时间,网上也没有人遇到过这种情况。。所以最终用了两种方式分别改宽和高才成功。
方式一:添加一个xml文件,里面添加dialog的样式,然后:
Window window = dialog.getWindow() ;
window.setContentView(R.layout.login_wait_dialog); //自定义一个xml文件
TextView tv = (TextView) window.findViewById(R.id.tv);tv.setText("正在登录,请稍后");方式二:使用windowmanager设置dialog的params,然后添加到dialog中:
/* * 将对话框的大小按屏幕大小的百分比设置 */ Window window = dialog.getWindow() ; WindowManager m = getWindowManager(); Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值 p.height = (int) (d.getHeight() * 0.6); // 改变的是dialog框在屏幕中的位置而不是大小
p.width = (int) (d.getWidth() * 0.65); // 宽度设置为屏幕的0.65 window.setAttributes(p); 最终使用两种方式分别更改dialog框的宽和高才成功。 代码:
Builder builder = new AlertDialog.Builder(LoginActivity.this);
final AlertDialog dialog = builder.create() ; dialog.setTitle("正在登录,请稍后");dialog.show(); //这些设置必须放在 dialog.show();后面才能有效果 Window window = dialog.getWindow() ; window.setContentView(R.layout.login_wait_dialog); RelativeLayout relayout = (RelativeLayout) window.findViewById(R.id.relayout); Display display =getWindowManager().getDefaultDisplay(); int minHeight = (int) (display.getHeight()*0.16); //使用这种方式更改了dialog的框高 // int minWidth = (int) (display.getWidth()*0.4); //没有效果 relayout.setMinimumHeight(minHeight); WindowManager.LayoutParams params = window.getAttributes() ; params.width =(int) (display.getWidth()*0.5); //使用这种方式更改了dialog的框宽 window.setAttributes(params);