如何将对话框放置在按钮下方(Android Studio)?

时间:2019-03-10 14:55:29

标签: java android dialog position

如何打开对话框,使其位于“按钮”小部件下方的固定位置?

这是我到目前为止所拥有的:

    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 :(得分:0)

对话框的位置有一个x,y,您可以使用要放置在其下方的按钮的x,y的偏移量吗?我相信还有其他方法,但是如果可行,则无需对您现有的代码进行太多修改

position of a control

            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);