在 Recyclerview 出现之前对其进行测量

2024-04-11

我目前在测量 recyclerView 出现之前遇到问题。我需要测量的高度才能启动“展开”动画。

这是我之前在我正在处理的代码中为 gridView 完成的,我正在尝试使用 GridLayoutManager 将其迁移到 RecyclerView

final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, View.MeasureSpec.AT_MOST);
mGridView.measure(widthSpec, heightSpec);
int targetHeight = mGridView.getMeasuredHeight();

它正在与 gridView 一起使用,但如果我在 recyclerView 上调用具有相同测量规格的测量方法,结果始终是 16777215,我认为这可能是某些东西的最大值,但我不能说是什么。

我看到一些帖子解释说,可以通过使用以下测量规格来测量视图,然后在屏幕上渲染视图之前对其进行测量:

final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);

但我得到 0 recyclerView.getMeasuredHeight(); 。

有没有办法在屏幕上渲染之前正确测量 recyclerView 的高度?

Thanks.


感谢 yigit 帖子,我终于可以通过手动膨胀孩子的视图来计算未来的 recyclerView 高度,并使用以下方法进行测量:

final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, View.MeasureSpec.AT_MOST);

最后将其测量高度乘以 gridLayoutManager 中包含的行数。希望 RecycleViews 布局管理器能够尽快支持 WRAP_CONTENT。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Recyclerview 出现之前对其进行测量 的相关文章

随机推荐

  • 如何在 Netbeans 中设置 java 编译器

    我正在进入 Java7 开发 并且我已将 JDK7 添加到Java 平台并在项目属性中选择它 但是当我编译时 我收到如下消息 warning java lang Boolean class java lang Boolean class m
  • 如何“对齐”2个字符串?

    首先让我解释一下 对齐 的含义 假设我们必须字符串 例如AGBCDEFABCDIEFK 他们的 结盟 是 A G B C D E F A B C D I E F K A B C D E F 另一个 相当简单的 例子 因为我相信我的问题可能与
  • 在 React 中使用 setState 更新对象

    我如何将多个状态传递给setState 这是一个例子 getInitialState function return list newFilm searchWord searchDetails componentDidMount funct
  • 使用javascript在两种颜色之间切换的最佳方法?

    Javascript初学者在这里 我本质上想做一个简单的切换 如果元素是黑色的 请将其更改为白色 如果是白色 请将其更改为黑色 function changeClass if document getElementById myButton
  • std::chrono 在当前日期上添加天数

    我想使用 std chrono 来查找根据过期时间计算未来的日期 过期期限是一个整数 指定 从现在起的天数 那么如何使用 chrono lib 来查找 100 天后的日期呢 假设你有一个time point http en cpprefer
  • `printf("...") || 的语义printf(“…”) || printf("…")`

    我想知道以下语句在 C 中会打印什么 printf hello n printf goodbye n printf world n 我通常习惯使用 cout 在 C 中打印一些内容 此外 我对这种方式使用的管道和双管道运算符感到困惑 谢谢你
  • 使用brew在MacOSx上安装Redis JSON

    如何使用brew 在 macOSx 上安装 RedisJSON 如何在不编译redis的情况下启用redis上的模块 我不想使用 docker 客户端 Redis Stack 可能是最简单的方法 它不仅仅是 RedisJSON 还包括 Re
  • 从 Node JS 中的生成器获取返回值

    我似乎无法弄清楚如何获取生成器的返回值 有人知道我做错了什么吗 function getGeneratorReturn var generator runGenerator var generatorReturn null var done
  • 使用 Mimes 验证 Laravel 文件 Post - Word 文件

    我有一张已发布的表格 我正在尝试使用验证来仅接受 Word 文档 我尝试使用哑剧类型 但似乎不起作用 而且我无法发现我的错误
  • SQLAlchemy 中的复杂外键约束

    我有两张桌子 SystemVariables and VariableOptions SystemVariables应该是不言自明的 并且VariableOptions包含所有变量的所有可能选择 VariableOptions有一个外键 v
  • 正确使用 Scala 特征和 case 对象

    为了掌握 Scala 类和特征的窍门 这里有一个简单的例子 我想定义一个指定各种操作的类 可以通过多种方式实现 我可以从以下开始 sealed trait Operations def add def multiply 例如 我可能会用一个
  • Windows 批处理脚本中的 URL 编码

    我有一个 Windows 批处理脚本 用于快速进行 Google 搜索 但是 我不知道如何对特殊字符进行一般编码 就像我尝试搜索 C 一样 井号会破坏它 这是我的代码 SET q https www google com q SET q q
  • Laravel Blade 使用自定义函数

    我有一个刀片 用于打印表格的内容 对于某些列 我需要根据要打印的值添加 CSS 类 例如 如果 OK 则添加绿色类 否则添加红色类 当然逻辑会更复杂 但重点是所有逻辑都会与风格相关 哪一个是保存此类函数 方法的最佳推荐位置 我需要创建模型吗
  • 如何在 Android 中以编程方式关闭“询问使用 WLAN”?

    我将收到 一个应用程序请求使用 WLAN 的权限 允许吗 当我尝试更改 WiFi 状态时 Android 5 1 真实手机三星 SM J5008 中的提示窗口 我有谷歌一些信息 例如https groups google com d msg
  • 在哪里可以找到 /usr/include/X11/extensions/Xcomposite.h

    我需要将我的应用程序放在全屏视频上并捕获它以放入我的 python tkinter 应用程序中的 画中画 框架中 我回顾了通常的嫌疑人 图像抓取 mss等 但它们似乎都只是抓取监视器上可见的内容 似乎没有人能够抓住一扇看不见的窗户 我在以下
  • 将变量内容复制到事实中后,Ansible 会抛出错误

    我有变量 其中包含带有其他模板引擎标记的字符串 不幸的是它们是三个花括号 如果我直接使用这些变量 一切都很好 如果我将它们复制到事实中以便随后修改它们 Ansible 会抛出错误 示例剧本 hosts localhost connectio
  • 如何使用对象模型获取 SharePoint 版本

    通过 WSSv2 SharePoint 2003 您可以获得您正在使用的 SharePoint 版本 e g SPGlobalAdmin 版本 http msdn microsoft com en us library microsoft
  • 在 SQL Server Management Studio(2005 或更高版本)中连接不同的 Windows 用户

    SQL Server Management Studio 2005 或更高版本 中是否有办法更改 Windows 身份验证用户 就像在 SQL Server 2000 及更早版本中一样 这是常规连接属性对话框 请注意选择 Windows A
  • 在模型序列化器中获取当前用户

    是否可以在模型序列化器中获取当前用户 我希望这样做而不必脱离泛型 因为这是一项必须完成的简单任务 我的型号 class Activity models Model number models PositiveIntegerField bla
  • 在 Recyclerview 出现之前对其进行测量

    我目前在测量 recyclerView 出现之前遇到问题 我需要测量的高度才能启动 展开 动画 这是我之前在我正在处理的代码中为 gridView 完成的 我正在尝试使用 GridLayoutManager 将其迁移到 RecyclerVi