我有一个复杂的框架布局,其中包含几个自定义视图。主视图是一个图表。
覆盖图形的是一个自定义视图,它表示一个十字形指针,用户可以在图形周围拖动它以读取有关特定数据点的详细信息。
框架布局捕获所有触摸事件,在它的每个子视图上调用“命中测试”方法以确定触摸是否在该视图上,然后将触摸事件分派到适当的视图。
当用户触摸十字准线并拖动它时,我将触摸事件传递给十字准线,它用于更新其位置并使自身无效。
一切正常,除了...
当我使这些子视图中的任何一个无效时,布局中的所有视图都在重绘。我知道这一点,因为我在开发人员选项中打开了“显示屏幕更新”。在任何时候我都不会使包含的 FrameLayout 无效 - 或者至少在不知情的情况下。
当然,处理布局的 Activity 不会使其无效,并且我在子视图中没有对父级的任何引用。
我没有发布代码,因为 a) 我不知道这是否是正常行为,b) 有很多!c) 如果这不是正常行为,我不知道代码的哪一部分有问题。当然,我很乐意提供任何可能被要求的东西。
我的最低 API 是 2.3.3,我的目标是 4.0。这两个版本都发生了这种情况,所以我怀疑我的代码是问题所在,但从哪里开始呢?
关于可能发生的事情的任何线索?