XRecyclerView的Header包含ListView冲突解决(XRecyclerView嵌套ListView)

RecyclerView添加Header的正确方式 看了一下博客目录,已经有好几篇博客是关于RecyclerView的,不过对于这么一款强大的控件,我还是要再写一篇博客来学习一下,这篇博客的主题是《为RecyclerView添加header》,当然在看完这篇博客后,相信添加Footer你也应该能够学会。话说在这么多新控件中为何RecyclerView备受开发者的喜爱?这还是因为在Android发展到今天基本上还没有像RecyclerView这么灵活的 阅读详情

公司要实现一个界面,非常类似手机京东的界面,下拉可以刷新,上拉可以加载更多。前同事用了XRecyclerview实现下拉刷新,上拉加载更多。然而,XRecyclerview的Header(顶部不规则的部分)用了一个ListView来实现垂直走马灯的效果,这就和XRecyclerview造成了冲突,导致XRecyclerview下拉卡顿。摸索了很久,试过重写ListView的onMeasure方法,也重写过RecyclerView的onMeasure方法,也试过监听RecyclerView的addOnItemTouchListener,都无济于事。最后,设置ListView的focusable为false解决了。注意:在xml中设置是无效的!!!,要在代码中设置:

lv_scroll.setFocusable(false);

如果同时设置

lv_scroll.setEnabled(false);

参考这里
那么ListView将不能响应手指滑动,更加完美。
最后,除了解决这个冲突,公司还要求实现监听RecyclerView滑动,手指向上推的时候,顶部title逐渐出现,向下划则逐渐隐藏title。
实现如下:
Fragment的xml,根布局是FrameLayout,那么title显示也不会影响RecyclerView。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/yellow_bg">

    <com.sf.sdk.xrecyclerview.XRecyclerView
        android:id="@+id/rv_order"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"/>
    <TextView
        android:id="@+id/tv_empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center|bottom"
        android:text="暂无数据"
        android:textColor="@color/gray_text_title"
        android:textSize="@dimen/txtsize_body"
        android:drawableTop="@mipmap/order_normal"
        android:layout_marginBottom="@dimen/margin_small"
        android:drawablePadding="5dp"/>
    <RelativeLayout
        android:id="@+id/rl_titlebar"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:background="@color/colorPrimary"
        android:orientation="horizontal"
        android:visibility="gone">
        <TextView
            android:id="@+id/titlebar_tv"
            style="@style/TextViewTitle"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:textColor="@color/black_text"
            android:text="我是标题"
            android:textSize="18sp" />
        <View
            android:id="@+id/view_split"
            android:layout_width="match_parent"
            android:layout_alignParentBottom="true"
            android:layout_height="@dimen/height_divider"
            android:background="@color/gray_line" />
    </RelativeLayout>
</FrameLayout>

header的xml就不贴了,主要是一些复杂不规则的界面,包含一个ListView。
监听RecyclerView:

rv_order.setOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                if (dy > 0) {
                    // 手指网上推,显示title
                    showTitle();
                } else {
                    // 手指往下推,隐藏title
                    hideTitle();
                }
            }
        });

两个动画效果:

 /**
     * 隐藏title
     */
    private void hideTitle() {
        if (rl_title.getVisibility() == View.VISIBLE) {
            TranslateAnimation moveAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(getActivity(), R.anim.hide_to_top);
            rl_title.setVisibility(View.GONE);
            rl_title.startAnimation(moveAnimation);
            moveAnimation.setFillAfter(true);
        }
    }

    /**
     * 显示Title
     */
    private void showTitle() {
        if (rl_title.getVisibility() == View.GONE) {
            TranslateAnimation showAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(getActivity(), R.anim.show_from_top);
            rl_title.setVisibility(View.VISIBLE);
            rl_title.startAnimation(showAnimation);
            showAnimation.setFillAfter(true);
        }
    }

动画文件show_from_top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="800"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="-100%"
    android:toYDelta="0" />

动画文件hide_to_top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="800"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="0"
    android:toYDelta="-100%" />
Android-根据XRecyclerView源码修改支持自定义header和footer 根据XRecyclerView源码修改支持自定义header和footer 立即下载

相关推荐

Android中Recyclerview使用5----添加头部:RecyclerViewHeader

Android中Recyclerview使用5----添加头部:RecyclerViewHeader,这个功能在Android开发中,也是非常常用,所以我自己写了一个例子放到这,供大家下载,和大家交流

BottomSheetDialogFragment 与 ListView RecyclerView ScrollView 滑动冲突问题

1.现象:BottomSheetDialogFragment 可以通过手势上下滑动,常用的ListView RecyclerView ScrollView 也都可以上下滑动,这样就会出现一些冲突问题,比如ScrollView想向下滑动时,ScrollView里面的内容没有滑动,但是BottomSheetDialogFragment被下拉关闭了。 2.源码分析 翻开BottomSheetDialog的源码: private View wrapInBottomSheet(int layoutResId.

Jason_HD的博客 4408

Android-复杂界面实现RecyclerView嵌套ViewPagerRecyclerView多布局实现

复杂界面实现,RecyclerView 嵌套 ViewPager、RecyclerView,多布局实现

RecyclerView嵌套布局,导致RecyclerView复用失效 解决

NestedScrollView嵌套RecyclerView时,RecyclerView的高度是无限大,所以要将RecyclerView设置固定高度。在代码中固定的,灵活度更高。@Override// 使用NestedScrollView的高度});

Lan_Se_Tian_Ma的博客 3028

Screenshot_2026-11-03-16-23-09-34.jpg

Screenshot_2026-11-03-16-23-09-34.jpg

研发流程后端开发工具,提示功能开发效率

后端开发工具

XRecyclerview用法以及遇到的一些问题

最近使用XRecyclerview来实现数据的刷新和上拉加载更多操作,由于第一次使用,踩了不少坑,本文即为记录问题.概述XRecyclerview的基本用法就不多说了,github上面介绍的比较清楚,也可以查看作者提供的example来方便了解用法,github地址:XRecyclerview 本文要说明的主要是使用XRecyclerview实现后台数据的下拉刷新以及上拉加载更多的实战,作者提供的

沐风的博客 1万+

SiamRPN++实战:如何用深度孪生网络提升无人机目标跟踪精度(附代码)

本文深入探讨了如何利用SiamRPN++深度孪生网络构建适用于无人机平台的高精度、轻量化单目标跟踪系统。文章详细解析了其兼顾精度与效率的核心原理,并提供了从PyTorch模型轻量化、骨干网络替换到TensorRT部署及应对遮挡、光照突变等实际挑战的完整工程实践指南与代码示例。

weixin_29047545的博客 370

【Android 手势冲突】Colin带你彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏(附demo哦)

在新一期的需求中,产品要求我们做出和美团某个页面类似的功能,即一个页面包含在scrollView中,上面一个部分放置一些常用的广告banner、宫格tab等,下面放置一个RecyclerView用于展示具体的产品列表。 要想实现上述功能,不可避免地要用到ScrollView嵌套RecyclerView。为什么要用RecyclerView?因为下面的产品列表项非常多,有60条,如果一次性加...

你关注了我,是个概率极低的事件...... 2万+

DeepSeek赋能CAD:从API调用到智能设计工作流的实战指南

本文详细介绍了如何利用DeepSeek AI技术赋能CAD设计工作流,从API调用到智能设计优化的实战指南。通过Python环境配置、API接入详解以及四大智能设计场景的实战案例,帮助CAD设计师实现参数化设计优化、自动规范检查等高效工作方式,大幅提升设计效率和质量。

weixin_29092579的博客 625

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置)

本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。

weixin_29056781的博客 343

scrollview嵌套listview产生的滑动冲突(recyclerview)

Android滑动冲突主要有两种方法: 1、外部拦截法 public class ListScrollView extends ScrollView {              private ListView listView;          public ListScrollView(Context context, AttributeSet attrs) {

yancychas的博客 1万+

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

XRecyclerView的使用

一个RecyclerView,它实现了pullrefresh,loadmore和header featrues.you可以像标准的RecyclerView一样使用它。你不需要实现一个特殊的适配器.qq群478803619截图 用法 ##gradle compile 'com.jcodecraeer:xrecyclerview:1.3.2' 就像一个标准的

yancychas的博客 1万+

NVIDIA NCCL 源码解析:从XML拓扑到高性能通信图的构建

本文深入解析了NVIDIA NCCL如何将XML硬件拓扑文件转化为高性能通信图的核心过程。详细阐述了从创建CPU、GPU、NIC等节点,到建立PCIe、NVLink连接,再到计算链路带宽并进行关键排序的完整建图流程。该图是NCCL实现最优通信路径规划、充分发挥NVLink等高速互联性能的基石,直接影响分布式深度学习训练的效率。

convnet3designer的博客 308

Python Selenium调用IE11报错全解析:从环境配置到稳定运行

在Web自动化测试领域,Selenium作为主流的跨浏览器测试框架,其核心原理是通过WebDriver协议与不同浏览器的驱动程序进行通信,实现对浏览器行为的模拟与控制。这一技术为软件测试的自动化、回归测试的效率提升提供了重要价值,广泛应用于金融、政务等对遗留系统兼容性要求高的行业场景。然而,当技术栈涉及过时的浏览器如IE11时,环境配置的复杂性显著增加,特别是Python与Selenium的组合常遭遇驱动兼容性、安全设置等挑战。本文聚焦于解决Python Selenium驱动IE11时的典型报错问题,深入剖

weixin_28834765的博客 323

Android 优雅的为RecyclerView添加HeaderView和FooterView

本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。 转载请标明出处: http://blog.youkuaiyun.com/lmj623565791/article/details/51854533; 本文出自:【张鸿洋的博客】 1、概述 RecyclerView通过其高度的可定制性深受大家的青睐,也有非常多的使用者开始对它进行封装或者改造...

dawuafang 1203

Arduino ESP32S3 基础入门教学大纲

ESP32环境、Arduino

追梦 3546

ListView嵌套RecyclerView遇到的一些坑以及解决办法

首先看下需求 要实现这个页面首先 我想到的是ListView嵌套RecyclerView,那么开动

Liberation的博客 4511

基于Simulink的智能车辆电子稳定控制(ESC)仿真

本文完成了基于 Simulink 的智能车辆电子稳定控制(ESC),实现了:✅ 构建含轮胎非线性的车辆动力学模型✅ 设计滑模横摆稳定性控制器✅ 实现四轮制动力分配逻辑✅ 验证在双移线低附着场景下的卓越稳定性✅ 为主动安全控制系统开发提供完整范式。

xiaoheshang_123的博客 79

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

解决ScrollView与RecyclerView/ListView滑动冲突的两种方法

方法一:把RecyclerView / ListView 写在单独的一个 layout 文件中,然后通过 LayoutInflater.from().inflate() 方法添加到父布局中 RecyclerView view = LayoutInflater.from(context).inflater(R.layout.recycler_view, father_layout);

Zackratos的博客 2501

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用RecyclerView解决滑动冲突(RecyclerView添加header)

概述 在android平时开发中,经常会碰到同一个页面中有多个list的问题,或者需要再一个list中存在静态布局需要与list一起滚动的的需求。 针对这些情况,笔者尝试过多种方法,如:scrollView嵌套recyclerView,recyclerView嵌套recyclerView等。(主要工作量是在对分发事件的控制) 最终还是认为使用单独的一个recyclerView最为实用,主要优势如下...

许佳佳的博客 2319

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

recyclerView通用适配器,支持添加多个header和footer

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

nextdarkhorse的专栏 2186

XRecyclerView实现RecyclerView下拉刷新上来加载 自己做了部分修改,使代码更简洁易用

首先感谢 开源作者 /** * Created by jianghejie on 15/11/26. */ 的无私奉献  我是在他的基础上做的修改 以前一直是用的XListView   可是 测试发现有一个奇奇怪怪的BUG,我们还无法解决。最严重的是 XListView   里面用的添加头addHeaderView方法在17以前有概率崩溃。后来在同事的项目里看到PullT

liuwei522176950的专栏 1万+

Recycleview 在头布局里嵌套Listview

RecycleView 在头布局嵌套Listview,解决listview显示不全问题,以及下拉卡顿问题;

shanshan_1117的博客 640

XRecyclerview嵌套XRecyclerview布局显示不全

前言  这篇文章是在笔者生病用手机写的,可能写的比较粗糙,希望读者能够海涵。大家在开发中经常会遇到recyclerview嵌套recyclerview的需求,或者把recyclerview作为头布局添加到recyclerview中,今天我们来说一下后者。正题  比如说头部是一个不固定条目数量的列表,具体展示多少条目根据服务器返回的数据来定,而外层也是一个列表。所以这个时候就用到我们所说的recyc...

xxm_love521的博客 882
上一篇: 解决ListView的smoothScrollToPosition不精确问题
下一篇: ttf字体文件抽取自己想要的字
ithouse
博客等级 码龄12年 200粉丝 212原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值