使用x,y坐标查找布局

Tae*_*hin 3 android button

我的应用程序充满了Android的自定义按钮.我想允许用户重新排列这些按钮,如Home或Application面板的图像按钮.

我对此进行了研究,发现我可以使用拖放功能与用户的动作进行交互.但在我的情况下,父布局可能会有所不同.在OnMove或OnDrop事件中,我需要在相应的布局中实际移动该按钮.

所以问题是如何找到包含坐标x和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;
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 8

您可以遍历父容器中的所有控件,并将每个子节点与当前的X,Y进行比较.您可以通过调用以下内容来获取视图边界:

View.getHitRect()

所以像这样:

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;
}
Run Code Online (Sandbox Code Playgroud)

这只是Psuedo代码,需要根据您使用的任何内容进行调整(即为嵌套控件添加递归).

希望有所帮助.