gpt4 book ai didi

android - 如何获取 View 的边距,移动到运行时未知的位置

转载 作者:行者123 更新时间:2023-11-30 00:55:54 25 4
gpt4 key购买 nike

截至目前,我正在开发一个 Android 应用程序,它提供了一些培训师可以用来与学员交流的工具,其中一个工具是阵容编辑器,它由可拖放的微调器组成*。

*有默认布局设置->足球阵容:4/4/2

如果用户按下 saveBtn,阵容将被保存为 Custom obj。称为 lineup,它包含 2 个具有 x 和 y 坐标的数组。它在 Recyclerview 中得到 repsesented,其中包含一个名为“编辑”的按钮。通过按下编辑按钮,我想通过将那些 x 和 y 坐标设置为默认编辑模式 Activity 中的微调器来显示保存的阵容。

我的问题是,程序总是返回 .xml 中设置的默认边距。

我用 .getLeft 和 .getBottom 试过了,你可以在这里看到:

public Lineup saveLineup(){
int[] x=new int[10];
int[] y=new int[10];
LayoutParams[] layouts=new LayoutParams[10];

for(int i=0; i<10; i++){
x[i]=positions[i].getLeft();//positions contains all the spinners used in the .xml
y[i]=positions[i].getBottom();
}
Lineup lineup=new Lineup(x,y);
return lineup;
}

为了拖放,我按如下方式覆盖了 OnTouch 方法:

@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:

dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;

case MotionEvent.ACTION_MOVE:

view.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
break;
default:
return false;
}
return true;
}

最佳答案

代替 getLeft()getBottom() 方法,使用 getLocationOnScreen(int[] outLocation) 获取 View 相对坐标到屏幕上。

int[] outLocation = new int[2];
position[i].getLocationOnScreen(outLocation);

int marginleft=outLocation[0];
int margintop=outLocation[1];

详情请看:https://developer.android.com/reference/android/view/View.html#getLocationOnScreen(int[])

关于android - 如何获取 View 的边距,移动到运行时未知的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com