Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从对话框到活动的按钮位置_Java_Android_Dialog_Position_Screen - Fatal编程技术网

Java 从对话框到活动的按钮位置

Java 从对话框到活动的按钮位置,java,android,dialog,position,screen,Java,Android,Dialog,Position,Screen,我一直在尝试从对话框中的按钮获取位置,以便我可以使用它在活动中将按钮放置在该按钮下方 我试过几件事,但似乎都不管用 int loc1[] = new int[2]; button.getLocationInWindow(loc1); int loc2[] = new int[2]; button.getLocationOnScreen(loc2); 我也试过了 button.getX(); button.getY(); 在对话框中,按钮从未放置在按钮下方 (我应该注意,我只提到了获得该职位

我一直在尝试从对话框中的按钮获取位置,以便我可以使用它在活动中将按钮放置在该按钮下方

我试过几件事,但似乎都不管用

int loc1[] = new int[2];
button.getLocationInWindow(loc1);

int loc2[] = new int[2];
button.getLocationOnScreen(loc2);
我也试过了

button.getX();
button.getY();
在对话框中,按钮从未放置在按钮下方

(我应该注意,我只提到了获得该职位的方法)

有人能帮我吗


谢谢

按钮按下后,您需要等待回调。您使用的代码没有返回正确的值,因为该值是在放置按钮之前返回的。因此,在布局中添加高度/宽度作为包裹内容的按钮,并使用以下代码:

layout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
    getViewTreeObserver().removeGlobalOnLayoutListener(this);

    int[] locations = new int[2];
     layout.getLocationOnScreen(locations);
    int x = locations[0];
    int y = locations[1];
}
});

制作布局参数时,它们取决于父级,因此您可能应该使用
LinearLayout.LayoutParams
RelativeLayout.LayoutParams
(还有其他情况)

并将(按钮1)下方的
layout_
添加到LayoutParams对象中。并将LayoutParams设置为要显示在第一个按钮1下方的新按钮