如何在Android的顶部屏幕上设置AlertDialog的位置?

我想在状态栏后面设置AlertDialog位置,当我的Dialog中的内容会增加时,怎么做?我正在使用自己的布局创建自定义AlertDialog ….请帮帮我….

下面是我的代码,我正在设置alertDialog的高度和x-y位置,但它仍然没有显示它的效果..

AlertDialog.Builder builder = new AlertDialog.Builder(this);
       LayoutInflater inf = getLayoutInflater();
        View layout = inf.inflate(R.layout.main, null);
        builder.setView(layout);
        builder.setTitle("Add to Home screen");
    AlertDialog dialog = builder.create();
        WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
        int dialogOriginalHeight = WMLP.height;
    WMLP.height += 750;
    Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
    WMLP.x = -10;   //x position
    WMLP.y = -10;   //y position
    Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
    dialog.getWindow().setAttributes(WMLP);
    Log.i("POSITION", "POS::HEIGHT:"+WMLP.height);
    dialog.show();

最佳答案 我知道这很老了,但是对于后来看到这个的人来说:

由于您使用的是默认重力,因此会忽略x和y.

docs

X position for this window. With the default gravity it is ignored. When using LEFT or START or RIGHT or END it provides an offset from the given edge.

我需要从右上方偏移,所以我将我的引力设置为0x00000035.这是最重要的. (顶部是0x00000030,右边是0x00000005).这将导致x和y不被忽略.

alert.getWindow().setGravity(0x00000035);
点赞