我想在状态栏后面设置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();
答案 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();
可能是一个不错的选择