美文网首页
AlertDialog的尺寸问题

AlertDialog的尺寸问题

作者: firzencode | 来源:发表于2016-09-01 17:46 被阅读962次

    如何设置一个AlertDialog的尺寸?

    很容易就可以查到,有这么一个做法:
    How to control the width and height of the default Alert Dialog in Android?

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

    注意:setLayout是在show()之后执行的。

    然而,事情并没有这么简单。
    按照这种方法显示出来的dialog,测量一下宽高之后,发现dialog的宽高比我们设置的要小一点点,而不是精确的相等。

    进行了好长时间的排查,最后确定,是alertDialog本身最大的View里面带上了padding,这个是由默认的style带过来的。
    当时没有找到在哪里设置这个padding,于是使用了一种折衷的方式来使得dialog和我们要求的size相等。

    final AlertDialog alertDialog = builder.setView(R.layout.dialog).create();
    alertDialog.show();
    
    View decorView = alertDialog.getWindow().getDecorView();
    int paddingTop = decorView.getPaddingTop();
    int paddingBottom = decorView.getPaddingBottom();
    int paddingLeft = decorView.getPaddingLeft();
    int paddingRight = decorView.getPaddingRight();
    
    int width = 600 + paddingLeft + paddingRight;
    int height = 400 + paddingTop + paddingBottom;
    alertDialog.getWindow().setLayout(width, height);
    

    以上。

    相关文章

      网友评论

          本文标题:AlertDialog的尺寸问题

          本文链接:https://www.haomeiwen.com/subject/fufhettx.html