如何解决使用选择时,TextView 的波纹效果在长按时卡住
我最近重构了我的应用程序以使用喷气背包导航。在我的 MainActivity 上,我有一个 ViewPager,其中包含 3 个片段,每个片段有 1 个 recyclerview。因此,我将 ViewPager 从 Activity 移到了新的 Fragment。就功能本身而言,一切正常,但出现了一个新问题,这让我很烦恼:当我长按在回收视图上选择一个项目时,涟漪效应会卡住并停留在那里,就好像我还在按项目,我没有。这是所选项目的图片。可以看出,涟漪效应在 TextView 上保持活动状态。
当我取消选择 Item 时,涟漪效果也会保持活动状态:
选择本身由 android SelectionTracker 处理。 TextView 的背景设置为 background="?android:attr/selectableItemBackground"
。整个 ViewItem 的背景设置为 android:background="@drawable/bg_multi_selection
,而 bg_multi_selection 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/secondaryLightColor" android:state_activated="true" />
<item android:drawable="@android:color/transparent" />
</selector>
这可能是什么问题?这尤其奇怪,因为当 ViewPager 及其片段包含在 Activity 而不是 Fragment 中时,问题并不存在。有关如何解决此问题的任何建议?
解决方法
我找到了一个适合我的解决方案。所以对于任何感兴趣的人,我做了以下事情:
在 onBindViewHolder() 方法的 recyclerviewadapter 中,我检查元素是否被选中,并以编程方式另外设置 TextView 的背景颜色和背景资源。
if (elementIsSelected) {
viewHolder.viewBinding.itemTextView.setBackgroundColor(context.resources.getColor(R.color.transparent,context.theme))
} else {
val outValue = TypedValue()
context.theme.resolveAttribute(android.R.attr.selectableItemBackground,outValue,true)
viewHolder.viewBinding.itemTextView.setBackgroundResource(outValue.resourceId)
}
而我将颜色定义为透明,即#00000000
这个问题只出现在某些设备上很奇怪,所以我不确定“真正的”问题是否出在其他地方,但至少我是这样解决的。希望这可能对其他人有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。