Android TV中使用RecyclerView左右长按或者连续按键焦点飞掉的问题

Android TV中使用RecyclerView左右长按或者连续按键焦点飞掉的问题:
复写LinearLayoutManager 的onInterceptFocusSearch方法:

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext){
            @Nullable
            @Override
            public View onInterceptFocusSearch(@NonNull View focused, int direction) {
                int count = getItemCount();
                int fromPos = getPosition(focused);
                int lastVisibleItemPos = findLastVisibleItemPosition();
                int spanCount = lastVisibleItemPos - fromPos;
                if (AppConfigurationUtils.isRtl && direction == View.FOCUS_RIGHT) {
                    direction = View.FOCUS_LEFT;
                } else if (AppConfigurationUtils.isRtl && direction == View.FOCUS_LEFT) {
                    direction = View.FOCUS_RIGHT;
                }
                switch (direction) {
                    case View.FOCUS_RIGHT:
                        fromPos++;
                        break;
                    case View.FOCUS_LEFT:
                        fromPos--;
                        break;
                }
                if (fromPos < 0 || fromPos >= count) {
                    return focused;
                } else {
                    if (fromPos > lastVisibleItemPos) {
                        scrollToPosition(fromPos);
                    } else {
                        int pos = lastVisibleItemPos - spanCount > 0 ? lastVisibleItemPos - spanCount : 0;
                        scrollToPosition(pos);
                    }
                }
                return super.onInterceptFocusSearch(focused, direction);
            }
        };```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值