【问题标题】:Positioning in drag and drop layout在拖放布局中定位
【发布时间】:2023-11-13 07:50:02
【问题描述】:

我在这里有一些关于拖放的问题。我已经创建了拖放代码,它工作正常。但问题来了,正如您在下面的图片中看到的那样,每个罐子只能装 4 个糖果,但是当我将糖果从第二个罐子拖到第一个罐子时,它仍然可以放入其中。我怎样才能让每个罐子只能用四个糖果固定?

这是我为拖放所做的编码。我应该在这段代码中的某处使用 if else 语句来解决我的问题吗?

  public boolean onDrag(View v, DragEvent event) {
  int action = event.getAction();
  View view = (View) event.getLocalState();
  switch (event.getAction()) {
  case DragEvent.ACTION_DRAG_STARTED:
    // Do nothing
    break;
  case DragEvent.ACTION_DRAG_ENTERED:
    v.setBackgroundDrawable(normalShape);
    break;
  case DragEvent.ACTION_DRAG_EXITED:
    v.setBackgroundDrawable(normalShape);
    break;
  case DragEvent.ACTION_DROP:
    // Dropped, reassign View to ViewGroup

    ViewGroup owner = (ViewGroup) view.getParent();
    owner.removeView(view);
    LinearLayout container = (LinearLayout) v;
    container.addView(view);
    view.setVisibility(View.VISIBLE);
    break;
  case DragEvent.ACTION_DRAG_ENDED:
    //v.setBackgroundDrawable(normalShape);
    if (dropEventNotHandled(event))
    {
        view.setVisibility(View.VISIBLE);
    }
    break;
  default:
    break;
  }
  return true;
}

private boolean dropEventNotHandled(DragEvent event) {
    // TODO Auto-generated method stub
    return !event.getResult();
}
  }
  }  

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java drag-and-drop awt


【解决方案1】:

case DragEvent.ACTION_DRAG_ENDED 块内,您应该检查 jar 中是否有空间,如果没有则返回 false 以便放置操作失败。

【讨论】:

  • 如何查看罐子里是否有空间?
  • 我们无法告诉您,因为我们看不到您的其余代码...您需要查找程序中将糖果分配给罐子的位置
  • 糖果已经在罐子里了。你想看xml代码吗?
  • 我认为在您的情况下,您最好多阅读一些内容,以便理解您的源代码。
最近更新 更多