以像素或dp获取AlertDialog的宽度

时间:2016-12-23 07:03:31

标签: android material-design alertdialog android-styles

我试图在像素中获取 AlertDialog 的宽度,并动态设置其宽度。

 getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
 int width = displaymetrics.widthPixels;

 WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
 lp.copyFrom(dialog.getWindow().getAttributes());
 lp.width = width;
 lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
 lp.gravity = Gravity.CENTER;

 dialog.getWindow().setAttributes(lp);

以上代码对我不起作用。另外,我跟其他代码一样here,但没有人帮忙。

如何以像素或dp获取和设置 AlertDialog 的宽度?

2 个答案:

答案 0 :(得分:1)

你只能获得高度和视野, 因此,如果它的自定义对话框,请按照其根视图,按照示例

RelativeLayout rl = (RelativeLayout) dialog.findViewById(R.id.root_relative_layout);

这里相对布局是父视图,组件在其中。

现在要获得高度和宽度: -

int width = rl.getWidth();
int height = rl.getHeight();

要设置widht和height,请执行此操作

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setView(layout);
    builder.setTitle("Title");
    alertDialog = builder.create();
    alertDialog.getWindow().setLayout(600, 400); //Controlling width and height.
    alertDialog.show();

OR

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();

lp.copyFrom(alertDialog.getWindow().getAttributes());
lp.width = 150;
lp.height = 500;
lp.x=-170;
lp.y=100;
alertDialog.getWindow().setAttributes(lp);

答案 1 :(得分:0)

替换下面的代码:

request.data