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

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

同样,仅当将图像拖到屏幕的底部和右侧时,才会发生此行为。当拖动到顶部或左侧时,图像从屏幕上消失。

最佳答案

视图缩小是因为在某个时候您更改了视图的宽度/高度,即说getRight() - getLeft()由于屏幕上没有足够的空间而被迫减小。

无论如何,直接设置视图的坐标不是您应该do要做的事情。而是实现您的自定义ViewGroup /布局:


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


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

08-05 08:03
查看更多