android - 子可点击/父长可点击
问题描述
我有一个FrameLayout
withTextView
在里面。
<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,但我android:background="?attr/selectableItemBackground"
的 FL 上有,所以当我点击它时它应该有涟漪效应,但电视会消耗它。有可能实现这一目标吗?
解决方案
android:addStatesFromChildren="true"
在您的父布局中使用。如文档中所述,
设置此 ViewGroup 的可绘制状态是否还包括其子级的可绘制状态。例如,这用于使一个组在其子 EditText 或按钮获得焦点时显示为焦点。
你可以在这里找到它:
推荐阅读
- python - 聚类许多坐标并放入 Folium
- python - 在 SQLAlchemy 中使用正确的文件结构以及如何将数据添加到 db
- user-interface - 最合适的 UI 设计模式和 JavaFX 问题?
- python - 使用“in”运算符时如何避免出现包含部分搜索字符串的字符串?
- ios - Cordova Phonegap HTML5 Sound 直到我录制视频后才起作用
- amazon-web-services - 在 Cloudformation 中对多个条件使用运算符
- ios - iOS - 禁用答案但保留 Crashlytics
- python - Google Cloud Kubernetes 未正确读取应用程序凭据
- prestashop - PrestaShop - 在运费页面上显示运费和小计
- css - CSS动画在执行期间重置