是否可以为ViewGroup内的View启用触摸事件但超出其范围?

时间:2018-02-14 00:06:40

标签: android drag-and-drop android-linearlayout android-viewgroup

我目前正在尝试设计一个ViewGroup(特别是FrameLayout的子类),它可以布局任意数量的子视图,并允许它们拖放外部布局组。它与LinearLayout几乎完全相同: View(s) inside a FrameLayout subclass inside a RelativeLayout

我可以将视图拖到ViewGroup外部并绘制它们,但是在放开视图后,它无法重新选择并进一步拖动。 enter image description here

我想知道是否有一种方法可以将逻辑与布局子类隔离开来,并且不需要在使用片段/视图组时需要做太多/任何额外的事情。

我已尝试在我的FrameLayout子类中覆盖getHitRect(Rect)但似乎从未调用过它。当然也不会调用dispatchTouchEvent(MotionEvent),大概是因为父ViewGroup决定不向它提供触摸,因为它超出了界限。我也尝试过实现TouchDelegate,但我认为需要在父视图上设置,这意味着需要了解这一点并在使用此布局时执行此额外步骤。

关于是否/如何可行的任何想法?在iOS上,可以通过覆盖hitTest:来相当容易地实现,以考虑子视图的帧。在Android上有类似的方法吗?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

没有任何代码,很难看到你在做什么,但最好的猜测是每个视图应该是相对布局的子视图。