VerticalGridView适配触摸屏踩坑,触摸滑动时位置重置/闪烁问题

2023-12-29 18:31:29

VerticalGridView是什么?

VerticalGridView是安卓leanback库的列表组件,用于支持使用遥控器(按键事件)浏览列表。

它与RecyclerView的继承关系是:VerticalGridView→BaseGridView→RecyclerView

首先我想吐槽一下leanback的BaseGridView相关组件,耦合度较高,并且不允许开发者替换其LayoutManager,且该GridLayoutManager是final修饰,不允许继承。

这样出了bug都没法给他改。

异常现象

如图所示的VerticalGridView中,使用手指触屏滑动时,会出现滑出一定距离就被重置回起点的问题,永远无法滑动到界面底部。

原因

起初是怀疑和布局刷新有关,因为在bindView中不给ImageView设置图片就没有该问题了。

后来看了下GridLayoutManager的代码,log日志打开后发现,每当触控下滑到一定距离,就会触发onLayoutChildren()方法,在这个方法中,会调用focusToViewInLayout()方法,该方法是用于,当用户使用遥控器上下左右移动焦点时,将VerticalGridView滚动至以焦点View为中心的位置。

这个逻辑在使用遥控器时是没有问题的,是需要的,但是在进行触摸事件时

文章来源:https://blog.csdn.net/kaixuan_dashen/article/details/135274998
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。