Как установить положение AlertDialog с экрана вверху в Android? - PullRequest
4 голосов
/ 01 июля 2010

Я хочу установить позицию AlertDialog за строкой состояния, когда содержание в моем диалоге увеличится. Как это сделать?Я создаю пользовательский AlertDialog, используя свой собственный макет .... Пожалуйста, помогите мне ....


Ниже мой код, я устанавливаю высоту и положение xy alertDialog, но все же этоне показывает своего эффекта ..

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 ]

1 голос
/ 02 мая 2013
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

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

dialog.show();

может быть хорошим вариантом

1 голос
/ 14 декабря 2011

Я знаю, что это действительно старо, но для тех, кто увидит это позже:

x и y игнорируются, потому что вы используете гравитацию по умолчанию.

Из документов :

X позиция для этого окна. С гравитацией по умолчанию это игнорируется. При использовании LEFT или START или RIGHT или END он обеспечивает смещение от заданного края.

Мне нужно было сместить мою точку справа вверху, поэтому я установил гравитацию на 0x00000035 Это сверху и справа. (верхний - 0x00000030, а правый - 0x00000005). Это приведет к тому, что x и y не будут игнорироваться.

alert.getWindow().setGravity(0x00000035);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...