子项可单击/父项可长单击



我有一个FrameLayout里面有TextView

<FrameLayout
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground">
<TextView
android:id="@+id/tv_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:linksClickable="true"
android:autoLink="email|web|phone"/>
</FrameLayout>

如您所见,我的TextView为电子邮件/网络/电话启用了自动链接。但是我的FrameLayout在代码中LongClickListener

flContainer.setOnLongClickListener { 
// some work
}

但是当我尝试通过子 TextView 长按父 FL 时,它不起作用,因为电视会拦截单击并且不允许父级长点击。 我知道简单的解决方案 - 只需将相同的 longClickListener 应用于 TextView,但我的 FLandroid:background="?attr/selectableItemBackground",所以当我单击它时它应该会产生连锁反应,但电视会消耗它。有可能做到这一点吗?

在父布局中使用android:addStatesFromChildren="true"。如文档中所述,

设置此视图组的可绘制对象状态是否还包括其 子项可绘制状态。例如,这用于创建组 当其子编辑文本或按钮获得焦点时,显示为焦点。

你可以在这里找到它:

android.view.ViewGroup

最新更新