在自定义容器中处理 onTouch 事件,以 TextView 作为内容
Handling onTouch event in a custom container, with TextView as content
我有以下问题。
在 Android 应用程序中,有一个自定义布局 class,它扩展了 FrameLayout。它覆盖了自定义实现的 onTouchEvent 方法。我们有一个 TextView 作为此布局的内容 class。我们希望此 TextView 中的 URL 链接是可点击的。为此,我们将 'android:autoLink="web"' 添加到 TextView 的 属性。接下来 Xml 随之而来:
<PinchZoomScrollView
android:layout_weight="350"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/newsDetailScrollView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:id="@+id/newsDetailText"/>
</PinchZoomScrollView>
添加autoLink="web"后,自定义布局class"PinchZoomEvent"的onTouchEvent好像没有被调用。似乎带有 autoLink 属性 的 TextView 以某种方式阻止了触摸事件。这很奇怪,因为 PinchZoomScrollView 是 TextView 的父级,它应该首先接收事件。在这种情况下应该怎么办?
Parents 不会在 Android 中自动首先接收触摸。您正在考虑其他框架。触摸事件从 children 开始,并在 Android 链中向上移动。如果你有一个 parent class 比如想要拦截触摸事件并可能覆盖 child 行为的滚动条,它需要实现 onInterceptTouchEvent,并且 return true 从它当它检测到要从 children.
采取的行动时
我有以下问题。
在 Android 应用程序中,有一个自定义布局 class,它扩展了 FrameLayout。它覆盖了自定义实现的 onTouchEvent 方法。我们有一个 TextView 作为此布局的内容 class。我们希望此 TextView 中的 URL 链接是可点击的。为此,我们将 'android:autoLink="web"' 添加到 TextView 的 属性。接下来 Xml 随之而来:
<PinchZoomScrollView
android:layout_weight="350"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/newsDetailScrollView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:id="@+id/newsDetailText"/>
</PinchZoomScrollView>
添加autoLink="web"后,自定义布局class"PinchZoomEvent"的onTouchEvent好像没有被调用。似乎带有 autoLink 属性 的 TextView 以某种方式阻止了触摸事件。这很奇怪,因为 PinchZoomScrollView 是 TextView 的父级,它应该首先接收事件。在这种情况下应该怎么办?
Parents 不会在 Android 中自动首先接收触摸。您正在考虑其他框架。触摸事件从 children 开始,并在 Android 链中向上移动。如果你有一个 parent class 比如想要拦截触摸事件并可能覆盖 child 行为的滚动条,它需要实现 onInterceptTouchEvent,并且 return true 从它当它检测到要从 children.
采取的行动时