Jetpack Compose 滚动条

2024-01-27

有没有办法添加滚动条来添加LazyColumn (ScrollableColumn已弃用)。 Javadoc 没有提及 Jetpack Compose 中有关滚动条的任何内容。

Just to clarify, this is the design I want to implement: 1

是否有可能在 Jetpack Compose 中做到这一点?或者不支持滚动条?


现在实际上是可能的(他们在 LazyListState 中添加了更多内容)并且非常容易做到。这是一个非常原始的滚动条(始终可见/无法拖动/等),它使用项目索引来确定拇指位置,因此当在只有很少项目的列表中滚动时,它可能看起来不太好:

  @Composable
  fun Modifier.simpleVerticalScrollbar(
    state: LazyListState,
    width: Dp = 8.dp
  ): Modifier {
    val targetAlpha = if (state.isScrollInProgress) 1f else 0f
    val duration = if (state.isScrollInProgress) 150 else 500

    val alpha by animateFloatAsState(
      targetValue = targetAlpha,
      animationSpec = tween(durationMillis = duration)
    )

    return drawWithContent {
      drawContent()

      val firstVisibleElementIndex = state.layoutInfo.visibleItemsInfo.firstOrNull()?.index
      val needDrawScrollbar = state.isScrollInProgress || alpha > 0.0f

      // Draw scrollbar if scrolling or if the animation is still running and lazy column has content
      if (needDrawScrollbar && firstVisibleElementIndex != null) {
        val elementHeight = this.size.height / state.layoutInfo.totalItemsCount
        val scrollbarOffsetY = firstVisibleElementIndex * elementHeight
        val scrollbarHeight = state.layoutInfo.visibleItemsInfo.size * elementHeight

        drawRect(
          color = Color.Red,
          topLeft = Offset(this.size.width - width.toPx(), scrollbarOffsetY),
          size = Size(width.toPx(), scrollbarHeight),
          alpha = alpha
        )
      }
    }
  }

更新: 我已经更新了代码。我已经弄清楚如何在 LazyColumn 滚动或不滚动时显示/隐藏滚动条+添加淡入/淡出动画。我还将drawBehind()更改为drawWithContent(),因为前者在内容后面绘制,因此在某些情况下它可能会在滚动条的顶部绘制,这很可能是不可取的。

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

Jetpack Compose 滚动条 的相关文章

随机推荐

  • PHP 会话变量足以进行用户身份验证吗?

    设想 用户登录后 将设置一个会话变量来确认其登录 在每个页面的顶部 登录会话变量被确认有效 如果不是 他们就会被踢出局 不使用持久性 cookie 仅使用session 问题 这是一个足够强大的安全措施本身 还是我应该 设置两个会话变量以验
  • 参考错误:未使用 nextjs 定义导航器

    我的代码是这样的 从 react 导入 React useEffect import alanBtn from alan ai alan sdk web const alanKey my key const App gt useEffect
  • UIScrollView 内的动态 UILabel 内容

    我有一个 UILabel 以及其他控件 存储在 UIScrollView 中 我想动态填充 UILabel 以便它自动扩展其高度以适应其内容 我只是想知道调整 UILabel 大小同时确保其父 UIScrollView 也将扩展其可滚动区域
  • Symfony2/FOSUserBundle - 多个捆绑包的路由问题

    如同this https stackoverflow com q 9826370 399584问题 我需要为我的网站的管理和前端包单独登录 管理实际上是一个单独的包 位于vendors 现在 我的路由如下所示 应用程序 配置 路由 yml
  • MVVMCross Binding 导致 Android 应用程序崩溃

    我有一个基于 Xamarin 和 MvvmCross 的 Android 应用程序 在该应用程序中 有一个带有我自己创建的 ExpandableListView 的视图 现在 此列表显示几个项目 这些项目使用 MvvmCross 绑定到其
  • 无法在 SQL Server 中的 ROW_NUMBER() 中使用别名?

    使用 sql 时 我必须创建一个按分组总和排序的 row number 列 select Sales Name SUM Sales Bill as billsum ROW NUMBER over order by billsum DESC
  • 如何建立简单的评审和5星评级系统? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对网络技术非常陌生 这基本上是我的团队正在研究的一个学期项目 我们正在开发一个食品评论网站 到目前为止 我不太确定如何实现一个简单的
  • 如何使用最新的 java sdk 3.1.2 在 couchbase 中执行批量插入

    我能够使用旧版本的 java sdk 例如 2 9 7 使用以下代码执行批量插入 public void insertAll 集合文档 Observable from documents flatMap new Func1
  • Django Rest Framework,超链接嵌套关系

    我有两个模型 User and Ticket Ticket有一个User User有很多Tickets 当我访问 url 时我已经完成了 用户 1 门票 我正在获取用户的门票列表 我想使用超链接关系 这是我在用户模型表示中看到的内容 tic
  • 将超级对撞机与 python 结合使用

    我想做一些实时声音处理 我听说超级对撞机 http supercollider sourceforge net 它看起来很棒 但我想坚持使用 python 因为 正常 编程是问题所在 有没有办法将 python 脚本作为模块加载到超级对撞机
  • 如何在ransack上设置带有字段名称的默认条件?

    我有一个用户和一个角色模型 两者都通过 habtm 关联 并且有一个与角色关联的论坛模型 在论坛的搜索表单中 我想按具有特定角色 按名称 版主 的用户进行过滤 来源看起来像这样 class User lt ActiveRecord Base
  • SQL:GROUP BY 之后的 SUM

    样本表 CustomerId VoucherId CategoryId StartDate EndDate 10 1 1 2013 09 01 2013 09 30 10 1 2 2013 09 01 2013 09 30 11 2 1 2
  • MongoDB C# 驱动程序:忽略插入属性

    我正在使用官方 MongoDB C Drive v0 9 1 26831 但我想知道给定一个 POCO 类 是否有办法忽略插入时的某些属性 例如 我有以下课程 public class GroceryList public string N
  • 如何链接到 Xcode 中的特定框架版本?

    我有一个链接到 OS X 的 Python framework 的应用程序 由于 Snow Leopard 已升级到 Python 2 6 该框架现在包含 2 4 2 5 和 2 6 的版本 不过 我的程序似乎不想链接到 2 6 当我尝试使
  • 在相机上叠加图像预览

    介绍 我有一个自定义相机应用程序 我在其中通过自定义 SurfaceView 显示相机预览 我需要实现的是 从图像资源创建覆盖图像 该图像将显示在cameraPreview 上 例如滤镜 我一直在不同的主题中搜索这个问题 但我还没有找到适用
  • 列出 R 闪亮服务器上应用程序中的对象内存使用情况

    我一直在尝试显示在 R Shiny Server 上运行时 R Shiny 应用程序中使用的每个对象的内存使用情况 以便识别内存泄漏 在 R 中 我可以调用ls or objects 并获取所有这些信息 一旦我尝试在闪亮的应用程序中显示此信
  • 使用 ORDER BY 时出现数据类型不匹配错误

    我有一个使用本地 sqlite 数据库的 Android 应用程序 private SQLiteDatabase mDb 当我运行此查询时 我将光标移到 pid 等于 id 的行上 根据需要 mDb query true PT TABLE
  • 使用 numpy (或其他向量化方法)优化此函数

    我正在用Python计算群体遗传学领域的经典计算 我很清楚有很多算法可以完成这项工作 但出于某种原因我想构建自己的算法 下面一段是图片 因为 StackOverflow 不支持 MathJax 我想要一个有效的算法来计算这些Fst 目前我只
  • 如何切换猫鼬数组中的布尔值?

    我想切换模式数组中的布尔值 我正在尝试使用数据库中存在的值切换该值 请参阅代码 但只是真变假 而不是假变真 以下是代码 exports postStatusItemchange req res next gt const productId
  • Jetpack Compose 滚动条

    有没有办法添加滚动条来添加LazyColumn ScrollableColumn已弃用 Javadoc 没有提及 Jetpack Compose 中有关滚动条的任何内容 Just to clarify this is the design