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下方的新按钮