Как разместить диалог под кнопкой Android Studio? - PullRequest
0 голосов
/ 10 марта 2019

Как мне открыть диалоговое окно, чтобы оно находилось в заданной позиции под виджетом кнопки?

Это то, что у меня есть:

    public void showPopup(View v){

    mDialog.setContentView(R.layout.dialog_custom_workout_info);
    Window window = mDialog.getWindow();
    window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    window.setGravity(Gravity.CENTER_HORIZONTAL);
    window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    mDialog.getWindow().setDimAmount(0);
    mDialog.show();

}

Диалог открывается, но я могуиспользуйте только гравитацию для центрирования, но мне бы хотелось, чтобы он открывался в заданной позиции относительно другого виджета (в этом случае виджет помечен как «imageButton».

Заранее спасибо!

1 Ответ

0 голосов
/ 10 марта 2019

Существует x, y для позиции диалогового окна, не могли бы вы использовать некоторое смещение от x, y кнопки, под которой вы хотите расположить его?Я уверен, что есть и другие способы, но если он работает, в существующем коде не так много изменений

позиция элемента управления

            Dialog d = DialogAbout.create(this);
            Button b = findViewById(R.id.pick_button);
            // Absolute coordinates
            int[] location = new int[2];
            b.getLocationOnScreen(location);
            int x = location[0];
            int y = location[1];

           // Coordinates relative to parent
            int bx = b.getLeft();
            int by = b.getTop();

            Window window = d.getWindow();

            WindowManager.LayoutParams wlp = window.getAttributes();
            // set the new location [you will need to play with this]
            wlp.x = x;
            wlp.y = (y - b.getHeight());

            // add to your window
            window.setAttributes(wlp);
...