Android:将ImageView拖离屏幕

时间:2015-07-17 20:02:42

标签: android android-layout drag-and-drop

我正在创建一个Android程序,以编程方式创建一个ImageView,将其拖放到屏幕上的任何位置。我可以沿着屏幕拖动视图,但是当它被拖动到屏幕的底部和右侧时,视图会缩小而不是仅仅离开屏幕。我想避免这种行为。

几年前我遇到过这个问题:Android: Drag View Outside Screen它似乎与我自己的问题相同,但没有得到答复。我尝试了一些其他建议的方法,包括将'clipChildren'和'clipToPadding'设置为false:Android: Display Image Slightly Outside A Relative Layout

同样,只有在将图像拖动到屏幕的底部和右侧时才会出现此问题。当拖动到顶部或左侧时,图像会离开屏幕。

1 个答案:

答案 0 :(得分:1)

视图会缩小,因为在某些时候您会更改视图的宽度/高度,即因为屏幕上没有足够的空间而强制减少getRight() - getLeft()

无论如何,直接设置视图的坐标不应该do。而是实现自定义ViewGroup / layout:

  • 覆盖onLayout()
  • 通过子项迭代:使用自定义逻辑确定每个孩子的顶部和左侧坐标。在您的情况下,它将使用触摸事件来计算拖动期间的坐标。对于右侧和底部坐标,您可以添加测量的孩子的宽度/高度。
  • 在每个孩子的电话child.layout(left, top, right, bottom)

有关示例,请参阅FrameLayout at line 513的代码和onLayout()的文档。