首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ScrollView+ListView滚动冲突,没有滑动效果 解决办法

问题背景 今天做个界面需要在整个布局都要滚动的基础上添加一个ListView元素,整个布局滚动当然用ScrollView。...但是在ScrollView+ListView的布局画好后,发现整个界面都无法滚动,而且ListView只显示了第一条元素。...问题分析: 由上面那个提示可以看到,正常情况下ScrollView下是不允许再包含一个可滑动的View的,为什么呢?...而ListView我们知道,item个数是会动态变化的,如果在ScrollView中加入ListView会让系统无法准确加载,导致了我们开始遇到的那种情况。...但是ListView只能显示部分元素,这不是我们想要的结果。 所以就需要一种方法可以根据ListView中Item数量,动态设置ListView的height,使全部item得到显示。

1.2K10

已中招!Android 基础面试常常吊死在这几个问题上……

应聘者:应使用线程将长时间运行的操作与主线程分开,以提高性能。但是它不能被优雅地取消,并且不能处理 Android 的配置更改。无法从 Thread 更新 UI 。...这样,速度和内存使用率将提高10倍。但是,当开始滚动并需要开始显示下一个视图时会发生什么?同样,一种简单的方法是为需要显示的每个新行创建一个新视图。...但是通过这种方式,当您到达列表的末尾时,将创建100个视图,并且的内存使用情况将与第一种方法相同。创建视图需要花费时间,因此您的滚动很可能不会很流畅。...ViewHolder模式:Recyclerview实现了ViewHolders模式,但在ListView 中不是必需的。RecyclerView 在滚动时回收并重用单元格。...在 ListView 中, findViewById() 在滚动 ListView 期间,代码可能会频繁调用,这可能会降低性能。即使适配器返回膨胀视图以进行回收,仍然需要查找元素并进行更新。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter可滑动组件

    Viewport:显示的视窗,即列表的可视区域; Sliver:视窗里显示的元素 前面介绍的 ListView、GridView都是一个完整的可滚动组件。...如果我们想要在一个页面中,同时包含多个可滚动组件,且使它们的滑动效果能统一起来,比如一个滑动的视图中包括一个列表视图(ListView),一个网格视图(GridView),且让他们的滑动效果统一。...3.2 Flutter 中常用的 Sliver Sliver名称 功能 对应的可滚动组件 SliverList 列表 ListView SliverFixedExtentList 高度固定的列表 指定itemExtent...上面提及的部分组件是和可滚动组件无关的,它们主要是为了结合CustomScrollView一起使用,这是因为CustomScrollView的子组件必须都是Sliver。...ScrollController可以通过initialScrollOffset设置初始位置,也可以监听到滚动的位置,但无法监听到开始滚动与结束滚动的事件。

    7.2K30

    腾讯开源超实用的UI轮子库,我是轮子搬运工

    功能列表 QMUIAnimationListView 使 ListView 支持添加/删除 Item 的动画,支持自定义动画效果。...QMUICommonListItemView 用作通用列表 QMUIGroupListView 里的 Item,也可单独使用。支持以下样式: 展示一行文字。 在右侧或下方增加一行说明文字。...QMUIGroupListSectionHeaderFooterView 用作通用列表 QMUIGroupListView 里每个 Section 的头部或尾部,也可单独使用。...QMUIObservableScrollView 可以监听滚动事件的 ScrollView,并能在滚动回调中获取每次滚动前后的偏移量。...提供多个常用的 View 相关工具方法,如对 View 设置单个方向的 padding、从 ViewStub 中获取一个 View、判断 ListView 是否已经滚动到底部等等。

    4.8K30

    Flutter 粘合剂CustomScrollView控件

    CustomScrollView CustomScrollView是使用Sliver组件创建自定义滚动效果的滚动组件,使用场景: ListView和GridView相互嵌套场景,ListView嵌套GridView...时,需要给GridView指定高度,但我们希望高度随内容而变化(不指定),ListView和GridView作为整体滚动效果。...相互嵌套场景 在实际业务场景中经常见到这样的布局,顶部是网格布局(GridView),然后是列表布局(ListView),滚动的时候做为一个整体,此场景是无法使用GridView+ListView来实现的...primary设置为true时,不能设置controller,因为primarytrue时,controller使用PrimaryScrollController,这种机制带来的好处是父组件可以控制子树中可滚动组件的滚动行为...(20.0); CustomScrollView( controller: _scrollController, ... ) physics表示可滚动组件的物理滚动特性,系统提供的ScrollPhysics

    2K20

    Flutter | 滚动组件,ListView,GridVIew等

    ,所以如果预计视口可能包含超出屏幕尺寸太多内容时,那么使用 SingleChildScrollView 将会非常昂贵(性能差),此时应该使用一些支持 Sliver 延时加载的可滚动组件,如 ListView...ListView 是最常用的可滚动组件之一,他可以沿一个方向线性排列所有子组件,并且他也支持基于 Sliver 的延时构建模型,ListView 的定义如下: ListView({ ......复制代码 意思是 ListView 的高度无法确定,所以解决的办法就是给 ListView 设置边界,我们可以使用 SizedBox 指定具体的高度: children: [ Text("商品列表"...可滚动组件的 Sliver Sliver 通常指的是可滚动组件的子元素。...因此,为了能让可滚动组件能和 CustomScrollView 配合使用,Flutter 提供了一下可滚动组件的 Sliver 版,如 SliverList,SliverGrid 等,实际上 Sliver

    8.7K20

    React-native踩坑小记

    tab切换的在最外层,每一个tab页签对应一个listview,同时在listview中还嵌套了一个轮播图swiper 开发过程中遇到了如下几个问题(android环境下): swiper插件无法显示;...swiper插件无法显示: 因为android下,scrollview与listview组件嵌套后会导致scrollview内容无法被渲染,所以无法显示。...所以我们将swiper挪到了listview的header中。(因为header被下拉刷新的组件所使用,所以我们重写了插件部分代码,将swiper塞了进去) 2....listview没有弹性边界,无法实现线上的下拉刷新效果: 因为android本身就没有滚动到边界还能继续滚动的策略。。这里使用一些java补丁代码(列表插件所提供),来实现弹性边界-。- 3....Touch* 组件有两个事件是这里我们需要用到的:onPressIn和onPressOut 这两个事件会在手指按下和抬起时触发; 所以我们需要做的就是在这两个事件中触发锁定和解锁外层scrollview的可滚动性

    4.5K80

    开始使用-编写你的第一个Flutter应用程序 顶

    第1步:创建起始Flutter应用程序 第2步:使用外部包装 第3步:添加一个有状态的小部件 第4步:创建一个无限滚动ListView 第5步:添加交互性 第6步:导航到新的屏幕 第7步:使用主题更改UI...lib/main.dart 第4步:创建一个无限滚动ListView 在这一步中,您将展开RandomWordsState以生成并显示单词配对列表。...当用户滚动时,ListView小部件中显示的列表将无限增长。 ListView的builder工厂构造函数允许您根据需要懒惰地构建列表视图。...在Flutter中,导航器管理包含应用程序路由的堆栈。 将路由推入导航器的堆栈,将显示更新为该路由。 从导航器的堆栈中弹出路由,将显示返回到前一个路由。...使用热重载加快开发周期。 实现一个有状态的小部件,为你的应用增加交互性。 用ListView和ListTiles创建一个延迟加载的无限滚动列表。

    9.5K20

    Flutter开发-可滚动组件

    ,那么使用SingleChildScrollView将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载的可滚动组件,如ListView。...ListView ListView是最常用的可滚动组件之一,它可以沿一个方向线性排布所有子组件,并且它也支持基于Sliver的延迟构建模型。...如果使用GridView+ListView来实现的话,就不能保证一致的滑动效果,因为它们的滚动效果是分离的,所以这时就需要一个”胶水”,把这些彼此独立的可滚动组件”粘”起来,而CustomScrollView...可滚动组件的Sliver版 但是在CustomScrollView中,需要粘起来的可滚动组件就是CustomScrollView的Sliver了,如果直接将ListView、GridView作为CustomScrollView...因此,为了能让可滚动组件能和CustomScrollView配合使用,Flutter提供了一些可滚动组件的Sliver版,如SliverList、SliverGrid等。

    4.5K20

    React Native列表之FlatList开发实用教程

    经常使用ListView的同学都知道: ListView的性能是比较差的,尤其是当有大量的数据需要展示的时候,ListView对内存的占用是相当可观的、丢帧卡顿那是常有的事。...如果你不需要渲染就知道内容的高度的话,可以通过getItemLayout 属性来改善用户体验,这使得通过例如滚动到具体Item更平滑。比如使用 scrollToIndex滚动到指定的Item。...例如,你可以使用windowSize来平衡内存使用情况与用户体验,使用maxToRenderPerBatch调整填充率与响应度,使用onEndReachedThreshold以控制何时发生滚动加载等等。...组件内元素必须是等高的——暂时还无法支持瀑布流布局。 onEndReached?: ?...: ViewabilityConfig 可参考ViewabilityHelper的源码来了解具体的配置。 方法 scrollToEnd(params?: object) 滚动到底部。

    6.6K00

    屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案

    使用场景如下:在一个 Activity 中监听屏幕旋转事件,在Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。...那我们就看开 update 方法的前面两个参数怎么使用的。...这里会发现整个 update 方法都正常,那我们走完它吧(AS的F9快捷键),奇怪的时候发现update又一次调用进来了,这一次参数有点不一样,看调用堆栈是从一个 onScrollChanged 方法调用过来的...至于为什么有 ListView 的时候会触发到这个滚动事件,这个具体也不知道,不过从这里可以推测,可能不仅是ListView会出现这种情况,理论上还有很多其他的写法会导致转屏的时候触发到那个滚动事件,转屏这个操作太重了...所以个人推测这是一个普遍存在的问题,只是这种使用场景比较少。

    1.9K90

    屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案

    使用场景如下:在一个 Activity 中监听屏幕旋转事件,在Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。...那我们就看开 update 方法的前面两个参数怎么使用的。...这里会发现整个 update 方法都正常,那我们走完它吧(AS的F9快捷键),奇怪的时候发现update又一次调用进来了,这一次参数有点不一样,看调用堆栈是从一个 onScrollChanged 方法调用过来的...至于为什么有 ListView 的时候会触发到这个滚动事件,这个具体也不知道,不过从这里可以推测,可能不仅是ListView会出现这种情况,理论上还有很多其他的写法会导致转屏的时候触发到那个滚动事件,转屏这个操作太重了...所以个人推测这是一个普遍存在的问题,只是这种使用场景比较少。

    1.2K00

    Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

    (scrollDirection值为Axis.vertical)并且controller没有指定时,primary默认为true physics:此属性接受一个ScrollPhysics对象,它决定可滚动...controller:控制器对象,主要作用是控制滚动位置和监听滚动事件 primary:是否使用 widget 树中默认的 PrimaryScrollController 。...ListView.builder 当 listview 的列表项较多或数量未知时,就需要使用 ListView.builder 来构建列表了 import 'package:flutter/material.dart...controller:控制器对象,主要作用是控制滚动位置和监听滚动事件 primary:是否使用 widget 树中默认的 PrimaryScrollController 。...当我们需要将不同的可滑动组件组合在一起时,就需要使用此对象来完成。ListView 和 GridView 都有对应的组合对象如:SliverList 和 SliverGrid。

    8.8K51
    领券