Место для всплывающей активности

У меня есть активность, которую я хочу показать в виде всплывающего окна.

У меня есть следующий код, но активность отображается в центре. Я хотел бы показать это в другом месте. Возможно, под моей панелью инструментов.

     protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_popup_message);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;
    int height = 120;

    getWindow().setLayout((int) (width * .98), height);

1 ответ

Решение

Вам нужно получить текущее окно просмотра и установить параметры x и y этого окна. Так что он будет установлен в нужном месте.

Ниже приведен пример того, как я установил свой диалог на желаемом месте.

    Window window = getWindow();
    // set "origin" to top left corner, so to speak
    window.setGravity(Gravity.TOP | Gravity.START);
    // after that, setting values for x and y works "naturally"
    WindowManager.LayoutParams params = window.getAttributes();
    params.x =selectedViewWidth;
    params.y = selectedViewHeight/2;

    window.setAttributes(params);

Я лично думаю, что если вы хотите показать всплывающее окно, то вместо использования активности вы также можете использовать PopupWindow или же DialogFragment, Вы можете управлять этим управлением более эффективно. Есть так много учебников, доступных для одного и того же.

Другие вопросы по тегам