如何将视图的 onClick 事件传递给 Android 上的父级?

新手上路,请多包涵

我在背景是选择器的布局中有一个 TextView。并且 TextView 的文本设置为从 HTML 跨越。然后我用 LinkMovementMethod 设置 TextView。

现在,当我点击 TextView 时,点击事件不会发送到其父布局以触发选择器。

这应该如何解决?

原文由 shiami 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 684
2 个回答

我认为您需要使用其中一种方法才能在事件被发送到适当的组件之前拦截它:

Activity.dispatchTouchEvent(MotionEvent) - 这允许您的活动在它们被分派到窗口之前拦截所有触摸事件。

ViewGroup.onInterceptTouchEvent(MotionEvent) - 这允许 ViewGroup 在事件被分派到子视图时观察它们。

ViewParent.requestDisallowInterceptTouchEvent(boolean) 在父视图上调用它以指示它不应使用 onInterceptTouchEvent(MotionEvent) 拦截触摸事件。

更多信息 在这里

希望有帮助。

原文由 Luis Miguel Serrano 发布,翻译遵循 CC BY-SA 2.5 许可协议

然后我用 LinkMovementMethod 设置 TextView。

TextView.setMovementMethod() 内部调用私有方法 fixFocusableAndClickableSettings 。这是问题的根源:调用 setFocusable(FOCUSABLE); setClickable(true); setLongClickable(true); 。因此,无论您认为自己设置了什么样的可点击性,这都是真的。

资源

这 3 个标志必须重新设置为 false 才能使视图变得不可点击。

原文由 Agent_L 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题