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

时间:2010-07-01 18:49:47

标签: android position 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();

2 个答案:

答案 0 :(得分:1)

我知道这对于那些后来看到这个的人来说真的很老了:

x和y被忽略,因为您使用的是默认重力。

来自docs

  

此窗口的X位置。使用默认重力,它将被忽略。当使用LEFT或START或RIGHT或END时,它提供与给定边缘的偏移。

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

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

答案 1 :(得分:1)

WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

wmlp.gravity = Gravity.BOTTOM | Gravity.RIGHT;
wmlp.x = 50;   //x position
wmlp.y = 50;   //y position

dialog.show();

可能是一个不错的选择