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

RecyclerView更改高度,但子布局不反映新大小

RecyclerView是Android开发中常用的列表控件,用于展示大量数据的列表。当需要更改RecyclerView的高度,但子布局不反映新大小时,可以通过以下步骤实现:

  1. 首先,确保RecyclerView的布局参数已经设置为wrap_content,这样RecyclerView的高度会根据子布局的高度自动调整。
  2. 在更改RecyclerView的高度之前,先获取到RecyclerView的布局参数对象,可以通过getLayoutParams()方法获取。
  3. 修改布局参数对象的高度属性,可以通过height属性或者setHeight()方法进行修改。例如,将高度设置为新的值,比如newHeight
  4. 将修改后的布局参数对象重新设置给RecyclerView,可以通过setLayoutParams()方法进行设置。
  5. 最后,调用RecyclerView的requestLayout()方法,通知RecyclerView重新布局,使子布局不反映新的大小。

以下是示例代码:

代码语言:txt
复制
// 获取RecyclerView的布局参数对象
ViewGroup.LayoutParams layoutParams = recyclerView.getLayoutParams();

// 修改布局参数对象的高度属性
layoutParams.height = newHeight;

// 将修改后的布局参数对象重新设置给RecyclerView
recyclerView.setLayoutParams(layoutParams);

// 通知RecyclerView重新布局
recyclerView.requestLayout();

这样,RecyclerView的高度就会根据新的值进行调整,而子布局不会反映新的大小。

对于RecyclerView的优势和应用场景,RecyclerView具有高度灵活性和性能优化的特点,适用于需要展示大量数据的列表界面。它可以通过ViewHolder的复用机制和局部刷新的方式,提高列表的滑动流畅性和内存使用效率。

腾讯云提供了云计算相关的产品和服务,其中与移动开发相关的产品包括云服务器、云存储、云数据库等。你可以通过腾讯云官网了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

原生长列表内嵌 Flutter 卡片性能调研

,也就是 9 对 FlutterView/FlutterEngine(实际个数跟 RecyclerView高度和卡片的高度有关); 为了模拟真实的场景,我们会在 RecyclerView 重用 FlutterCard...对象时,会重新随机产生一个的卡片高度,并通过 MessageChannel 通知 FlutterEngine 更新内容,触发该卡片的 Widget 树的更新和重布局,每个卡片显示一张图片和两段文本;...Pixel,在现在来说算是性能比较差了,可以更好地反映实际的状况。...卡片空白帧数 在 Demo 的场景中,RecyclerView 在惯性滚动时,将的卡片从不可见区域移进可见区域,触发了 TextureView 的绘制,而 TextureView 的 Surface...RecyclerView 会提前一些将卡片加入 View 树参与布局 按照原生的逻辑,Flutter 需要在 Surface Create 时才触发 ScheduleFrame。

1.4K20

Recyclerview竟能如此丝滑,这14个优化策略不容错过...

优化思路 RecyclerView 性能优化的核心思路可以概括为以下几个方面: 布局优化: 优化 RecyclerView布局结构,减少嵌套层级,提高布局效率。...布局优化 减少布局嵌套 避免在RecyclerView的Item布局中使用过多的嵌套布局和复杂的层次结构,这会增加渲染的时间和消耗。...会假设所有的Item的高度是固定的,不会因为Item的变化而触发重新计算布局,避免requestLayout导致的资源浪费。...如果Item高度固定或者会发生变化,应该避免使用该方法,否则可能导致布局显示异常。...(size)方法来设置缓存大小,可以控制RecyclerView中缓存ViewHolder的数量,避免过多的缓存占用过多内存。

76610

教你玩转 Android RecyclerView:深入解析 RecyclerView.ItemDecoration类(含实例讲解)

2.1.3 源码分析 RecyclerView本质上是一个自定义ViewGroup,子视图child = 每个ItemView 其通过 LayoutManager测量并布局 ItemView public...使用场景:设置View的边界大小,使得其大小>View的背景大小 // 如 按钮图标(View的背景)较小,但是我们希望按钮有较大的点击热区(View的边界大小) // 返回到分析1进来的原处 总结...区域 // 获取RecyclerView的Child view的个数 final int childCount = parent.getChildCount(); // 设置布局参数...时添加该分割线即可 Rv = (RecyclerView) findViewById(R.id.my_recycler_view); //使用线性布局 LinearLayoutManager...时添加即可 * Rv = (RecyclerView) findViewById(R.id.my_recycler_view); //使用线性布局 LinearLayoutManager

1.8K21

RecyclerView 居然还能实现吸底效果

测量RecyclerView内容高度实现 这种方式很直观,我们先获取RecyclerView控件的高度h1,设置完数据后再获取RecyclerView的内容高度h2,然后将h1与h2进行比较: ①如果h1...通过recyclerView#getHeight方法获取到的高度是固定的,就是布局文件中设定的recyclerView高度。...②让Adapter支持两种布局,普通Item和Footer布局 ③在给RecyclerView设置完数据后,获取RecyclerView的控件高度h1和RecyclerView的内容高度h2 ④如果h1...但它的缺点也很明显,需要根据不容的业务去计算不同的View的高度。 一般推荐这种方式去实现,不过它可以当做一个保底方案,毕竟简单粗暴易理解易实现。...这里需要说明的是,这种方法实现的核心是getItemOffsets预留空间,onDrawOver直接在Item上层绘制的悬停布局,悬停布局不复用ItemView。

3K20

RecyclerView使用详解(代替ListView)

;今天我们就实现最简单的五点功能: 功能点:为RecyclerView添加点击事件,添加头布局和脚布局,添加下拉刷新和上拉加载更多; 好了首先说下如何用RecyclerView代替横向的listview...(layoutManager); //设置recyclerView标记,如果确定内容的高度都一致,设置为true,提高内容渲染效率;(如果高度不确定系统要自己适配高度recyclerView.setHasFixedSize...(adapter); RecyclerVIew提供了三种内置的布局管理器: LinearLayoutManager:线性布局,横向或者纵向滑动列表 GridLayoutManager:表格布局...添加分割线使用了系统提供的类; 个人感觉完全没必要,甚至感觉多次一举,个人感觉完全可以给RecyclerView和item设置背景实现分割线或者在item布局中添加view布局实现; 首先了解下RecyclerView...myViewHolder; } //填充onCreateViewHolder方法返回的holder中的控件(当一个View需要出现在屏幕上时,该方法会被回调,我们需要再该方法中根据数据来更改视图

1.3K20

关于RecyclerView你知道的不知道的都在这了(上)前言目录正文

ViewPager 的 setAdapter() 来刷新,那么此时,旧的 fragment 其实就全被移除掉了,然后 new 了的 fragment 绘制布局信息。...这样,的 fragment 里RecyclerView 的 item 就又需要全部重新创建了,如果用这个方法开启了回收工作,那么当旧的 fragment 被移除时会触发到 RecyclerView...如果 RecyclerView 高度不足以让所有行都显示出来,那么就会出现 item 重叠现象。...setSpanSizeLookup() 通常情况下,网格布局样式下,每个小格的大小基本都是一样的,但如果我们想实现如下的效果呢: ?...就以上上图的布局为例,来看下打出来的日志: ? 日志.png 得到的结果是个数组,数组的大小就是构造方法中传入的 spanCount。

3.1K60

Android嵌套滑动冲突的解决方法

(1)重写一个viewpager继承系统的ViewPager,至于怎么重写的我不太记得了 (2)重写RecyclerView继承系统的RecyclerView,因为我记得会出现高度的原因导致RecyclerView...设置固定高度的话会不显示或者只显示一个Item,所以要重写RecyclerView去动态衡量Item x count 的高度。...三.现在的做法 现在我肯定不会像之前一样做,因为出了一个控件NestedScrollView。它能够很好的帮我们解决滑动冲突,接下来我会尽我所能分析所有可能出现的情况。...1.布局只嵌套RecyclerView的情况 就是如下图的情况: ? 这种情况最容易解决,就直接使用NestedScrollView做父布局,然后嵌套RecyclerView就行。...2.布局嵌套其它可滚动控件的情况 就是在第一种情况下把RecyclerView换成其它可滑动控件。

3.1K21

Android魔术系列:一步步实现滑动折叠列表

而且,为了能让最后的item也可以凸显出来,我们需要在列表的结尾插入一个footer以保证最后的item可以置顶显示,如图: Item布局 效果分析完了,下面我们来看看如何实现。...scale_item_content中是那些大小可变的文字内容 布局比较简单,后面会讲到如何使用这些layout达到效果。 另外还有一个footer的布局,因为很简单就不贴出代码了。...这里之所以再加上10像素,是因为如果设置高度正好是余下的高度,当快速滑动到底部的时候有几率会出现问题,所以这里让高度略大于实际展示的高度。...这个偏移是关键参数,通过这个偏移计算出第一个item收缩的高度和第二个item展开的高度,并且计算第二个item遮罩的透明度和文字内容的大小。...其中changeItemHeight(view, int)用来改变item的高度实现展开或折叠;而changeItemState(view, float, float)用来改变遮罩透明度和文字内容大小

91810

RecyclerView addItemDecoration 的妙用 - item 间距平均分布和添加分割线

可以影响 item 的大小,类似于在 item 中设置 padding 和 margin。...实现思路 我们知道 RecyclerView 没有像之前 ListView 提供 divider 属性,设置分割线的话有挺多人在 itemView 的布局里面加个 1dp 左右的 view,根据业务场景设置是否可见...getItemOffsets,加上 divider 的高度,影响 itemView 的最终 size 在 onDraw 方法,根据 LinearLayoutManager 的方向分别绘制分割线 @Override...假设我们 spancount 为 3,那么在设置 itemDercation 的情况下它的分布是这样的,可以看到第一列与最后一行的距离是不一样的 ?...int maxDividerWidth = getMaxDividerWidth(view); int spaceWidth = mFirstAndLastColumnW;//首尾两列与父布局之间的间隔

6K41

ItemTouchHelper 实现交互动画

item的数据位置交换,再调用RecyclerView的notifyItemMoved()方法刷新布局,同时,因为RecyclerView自带item动画,就可以完成上面的交互效果。...itemView而已,当那两个透明缩小的itemView被再次使用时,之前设置的透明度和高度比例已经是0,所以就出现了这种情况,解决方法也很简单,只要在item被移除后,将itemView的透明度和高度比例设置回来即可...11.RecyclerView上拉加载 添加recyclerView的滑动事件,上拉加载分页数据,设置上拉加载的底部footer布局,显示和隐藏footer布局 12.RecyclerView缓存原理...RecyclerView做性能优化要说复杂也复杂,比如说布局优化,缓存,预加载,复用池,刷新数据等等 13.SnapHelper源码分析 SnapHelper旨在支持RecyclerView的对齐方式,...横向滑动到底后滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView使用Glide加载图片导致图片错乱问题解决 24.ScrollView

3.8K20

壹二APP开发实践回顾总结出40条精要

它包括相同的 ProGuard 规则,但还包括其他在字节码一级(方法内和方法间)执行分析的优化,以进一步减小 APK 大小和帮助提高其运行速度。...说到这里你也要小心引入或者打开了 -dontobfuscate ,这个就是说混淆了。所以最后你是不是发现混淆和混淆怎么都一样了?! 我在抄 zxing 的时候不小心引入了。...的时候没法给当爹去填充布局。...链接 29、 RecyclerView 更新数据如果有动画的话,那么应该先清除所有的数据,再添加的数据,不然动画效果和以前的列表会同时出现,特别诡异。...32、TextView 指定最大行数 应该用的都多,如果高度又需要固定,可以使用LinearLayout的weight指定,但是weight是建议嵌套使用的,其实这里可以考虑使用 minLine 来限定最小高度

87240

RecyclerView性能优化

DiffUtil是support包下新增的一个工具类,用来判断数据和旧数据的差别,从而进行局部刷新。...减少过度绘制 减少布局层级,可以考虑使用自定义View来减少层级,或者更合理的设置布局来减少层级。...Note: 目前推荐在RecyclerView中使用 ConstraintLayout,在ConstraintLayout1.1.2版中,性能还是表现不佳,后续的版本可能这个问题就解决了,需要持续关注...可以使用代码去生成布局,即 newView()的方式。这种方式是比较麻烦,但是在布局太过复杂,或对性能要求比较高的时候可以使用。...设置高度固定 如果item高度是固定的话,可以使用 RecyclerView.setHasFixedSize(true);来避免requestLayout浪费资源。

1.9K60

【Android从零单排系列二十六】《Android视图控件——ScrollView》

布局超过屏幕大小时,ScrollView会自动启用滚动功能,用户可以通过滑动屏幕来查看隐藏部分的内容。...与RecyclerView相比,ScrollView更适用于静态的、不需要复用子项的情况。...二 ScrollView使用方法 在XML布局文件中定义ScrollView容器。在需要可滚动内容的区域内添加ScrollView标签,并指定其宽度、高度以及其他属性。...为了让ScrollView正常工作,内容视图的高度应根据其内容进行适当调整。您可以通过设置高度为"wrap_content"或固定高度,或使用权重来控制内容视图的高度。...android:fadeScrollbars:控制滚动条是否在活动状态时渐隐。设置为true表示滚动条会渐隐,默认为false。

34920
领券