使用NestedScrollView代替ScrollView解决滑动冲突

使用NestedScrollView代替ScrollView解决滑动冲突想必大家遇到过在同一个界面中 要展示的内容非常多 完全展示出来高度远超过屏幕高度 这时候通常的做法是布局中使用 ScrollView 进行嵌套 但如果遇到 ScrollView 嵌套中包含一个或者多个 RecyclerView 列表的话 还得自定义 RecyclerView 以解决滑动冲突 那么今天我们这里有一个现成的控件 NestedScroll 用他替代 ScrollView 并且不用自定义 Recycle

想必大家遇到过在同一个界面中,要展示的内容非常多,完全展示出来高度远超过屏幕高度,这时候通常的做法是布局中使用ScrollView进行嵌套,但如果遇到ScrollView嵌套中包含一个或者多个RecyclerView列表的话,还得自定义RecyclerView以解决滑动冲突。那么今天我们这里有一个现成的控件NestedScrollView,用他替代ScrollView,并且不用自定义RecyclerView等列表控件来解决滑动冲突。因为他的内部已经帮我们解决了子View的滑动冲突。

下面我们来看看他的具体用法:

 
   
    
     
      
     
    
    
     
      
      
     
    
   

Java代码:

public class NestedScrollViewActivity extends AppCompatActivity { @BindView(R.id.customTitle) TextView customTitle; @BindView(R.id.toolBar) Toolbar toolBar; @BindView(R.id.rvNestedScrollView) RecyclerView rvNestedScrollView; List 
  
    integerList; NestedScrollViewAdapter adapter; @BindView(R.id.appBar) AppBarLayout appBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nested_scroll_view); ButterKnife.bind(this); toolBar.setTitle(""); customTitle.setText("NestedScrollView的练习"); setSupportActionBar(toolBar); integerList = intiData(); intiData(); mainViewListData(); } private List 
   
     intiData() { return InitData.getInstance().integerList(); } private void mainViewListData() { LinearLayoutManager manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.VERTICAL); rvNestedScrollView.setLayoutManager(manager); adapter = new NestedScrollViewAdapter(this, integerList); rvNestedScrollView.setAdapter(adapter); } } 
    
  

integerList数据:

public class InitData { public static InitData instance; public static InitData getInstance(){ if (instance == null) { synchronized (InitData.class){ if (instance == null) { instance = new InitData(); } } } return instance; } public List 
  
    integerList(){ List 
   
     integerList = new ArrayList<>(); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); integerList.add("剑一破"); integerList.add("剑二空"); integerList.add("剑三飞"); integerList.add("剑四灭"); integerList.add("剑五虚"); integerList.add("剑六绝"); integerList.add("剑七真"); integerList.add("剑八玄"); integerList.add("剑九轮回"); integerList.add("剑十天葬"); integerList.add("剑十一涅槃"); integerList.add("剑十二心"); return integerList; } } 
    
  

现在我们用NestedScrollView代替ScrollView来试试:

用法很简单,在前面贴出的xml文件中,只需要用android.support.v4.widget.NestedScrollView替代ScrollView,并给RecyclerView设置.setNestedScrollingEnabled(false)属性即可:

rvNestedScrollView.setNestedScrollingEnabled(false); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219467.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:29
下一篇 2026年3月17日 下午10:29


相关推荐

  • JVM 内存结构基于JDK1.8【JVM篇三】

    JVM 内存结构基于JDK1.8【JVM篇三】在我的上一篇文章别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】中,相信大家已经对java类加载机制有一个比较全面的理解了,那么类加载之后,字节码数据在Java虚拟机内存中是如何存放的?Java虚拟机在为类实例或成员变量分配内存是如何分配的?是的,这两个问题就涉及到了JVM内存结构的知识了,那么这篇文章将进行解答。文章目录1、内存结构还…

    2022年5月20日
    34
  • C++ 多态 超详细讲解

    C++ 多态 超详细讲解文章目录多态概念引入 1 C 中多态的实现 1 1 多态的构成条件 1 2 虚函数 1 3 虚函数的重写 1 4C 11override amp amp final1 5 重载 覆盖 重写 重定义 隐藏 2 抽象类 2 1 抽象类的概念 2 2 接口继承和实现继承 3 多态的原理 3 1 虚函数表 3 2 多态的原理 3 3 动态绑定与静态绑定 4 继承中的虚函数表 4 1 单继承中的虚函数表 4 2 多继承中的虚函数表 other 一些有意思的题目多态概念引入多态字面意思就是多种形态 我们先来想一想在日常生活中

    2026年3月19日
    1
  • Onvif协议:什么是Onvif

    Onvif协议:什么是Onvif什么是 onvif

    2026年3月17日
    2
  • 马哥学习—-李洋个人笔记–启动故障排除

    马哥学习—-李洋个人笔记–启动故障排除故障1删除/boot之后的恢复步骤:1重启电源,迅速按esc进去选择启动模式,然后选cd-rom这项(从光驱启动)2重启后进入救援模式(选择rescue),选择语言和键盘布局后,一路回车到下一步。3询问是否需要网络选项,一般来说,救援模式不需要网络,选择no,回车进入下一步。4这一步提示内容大意为:救援系统将尝试寻找你的linux安装,并在目录mnt/sysimage下安装它…

    2022年7月21日
    16
  • FindWindowEx 遍历所有窗口

    FindWindowEx 遍历所有窗口 FindWindowEx 唯一麻烦是第2个参数的指定.Explore下窗口是Z序的 ,实际上就是根据第一个参数和第2个参数来找第2个参数后的一个窗口:HWNDchild=0;child=FindWindowEx (NULL,child,NULL,NULL);这样,child就是一个Explore,然后,通过循环能够找到c…

    2022年6月1日
    127
  • Spring Boot常用注解(绝对经典)

    Spring Boot常用注解(绝对经典)一 Spring 常用注解 Spring 常用注解 绝对经典 二 Jpa1 Entity Table name 表明这是一个实体类 一般用于 jpa 这两个注解一块使用 但是如果表名和实体类名相同的话 Table 可以省略 2 MappedSuperC 基于代码复用和模型分离的思想 在项目开发中使用 jpa 的 MappedSuperC 注解 将实体类的多个属性分别封装到不同的非实体类中 例如 数据库表中都需要 id 来表示编号 id 是这些映射实体类的通用属性 交给 jpa 统

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号