我的应用程序充满了Android的自定义按钮.我想允许用户重新排列这些按钮,如Home或Application面板的图像按钮.
我对此进行了研究,发现我可以使用drag& amp;删除与用户动作交互的功能.但在我的情况下,父布局可能会有所不同.在OnMove或OnDrop事件中,我需要在相应的布局中实际移动该按钮.
所以问题是如何找到包含坐标x和amp;的布局. y并将按钮放入其中.
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
status = START_DRAGGING;
break;
case MotionEvent.ACTION_UP:
status = STOP_DRAGGING;
break;
case MotionEvent.ACTION_MOVE:
if(status == START_DRAGGING){
//parentLayout.setPadding((int)event.getRawX(), 0,0,0);
//**What to do here**
parentLayout.invalidate();
}
break;
}
return true;
}
解决方法:
您可以遍历父容器中的所有控件,并将每个子节点与当前的X,Y进行比较.您可以通过调用以下内容来获取视图边界:
所以像这样:
for(View v : parent.children())
{
// only checking ViewGroups (layout) obviously you can change
// this to suit your needs
if(!(v instanceof ViewGroup))
continue;
if(v.getHitRect().contains(x, y))
return v;
}
这只是Psuedo代码,需要根据您使用的任何内容进行调整(即为嵌套控件添加递归).
希望有所帮助.
标签:button,android
来源: https://codeday.me/bug/20190721/1494724.html