当前位置: 首页 > 知识库问答 >
问题:

如何检查LazyColumn中的项目对于屏幕的高度来说是否太少?

劳彦
2023-03-14

由于LazyColumn没有滚动条,我尝试了这个解决方案。

有没有办法让我检查项目是否太少,列表无法滚动,因为滚动条仍然可见,如果可能的话,我想隐藏它?

共有1个答案

马德宇
2023-03-14

在这种情况下,你应该使用惰性列表状态:它包含关于可见元素的信息,你需要检查它们是否都是完全可见的。

当需要连续读取任何状态并根据该状态产生一些值时,应使用derivedStateOf,以防止重复重新编译。

kotlin prettyprint-override">val state = rememberLazyListState()
val canBeScrolled by remember {
    derivedStateOf {
        val layoutInfo = state.layoutInfo
        val visibleItemsInfo = layoutInfo.visibleItemsInfo
        if (layoutInfo.totalItemsCount == 0) {
            false
        } else {
            val firstVisibleItem = visibleItemsInfo.first()
            val lastVisibleItem = visibleItemsInfo.last()
            
            val viewportHeight = layoutInfo.viewportEndOffset + layoutInfo.viewportStartOffset)

            !(firstVisibleItem.index == 0 &&
                    firstVisibleItem.offset == 0 &&
                    lastVisibleItem.index + 1 == layoutInfo.totalItemsCount &&
                    lastVisibleItem.offset + lastVisibleItem.size <= viewportHeight)
        }
    }
}
LazyColumn(state = state) {
    // ...
}
 类似资料:
  • 问题内容: 我试图找到屏幕的宽度和高度,但是我尝试过的任何方法都无法在我创建的类中使用,下面是我的代码。 有人知道如何找到它吗?我无法使用下面尝试的方式,因为.getWidth()已弃用? 问题答案: 使用以下代码

  • 我知道如果你想检查是否有人点击了什么,你会这样做 但是我想检查屏幕是否根本没有被点击。为了做到这一点,我会产生什么代码? 此外,作为附带说明,让Android应用程序中的所有类扩展类是个好主意吗?

  • 在Android系统中如何获得屏幕的可用高度?我需要的高度减去状态栏/菜单栏或任何其他可能在屏幕上的装饰,我需要它为所有设备工作。另外,我需要在onCreate函数中了解这一点。我知道这个问题以前有人问过,但我已经尝试过他们的解决方案,但没有一个奏效。以下是我尝试过的一些事情: 我已经在API7-17上测试了这段代码。不幸的是,在API 13的底部水平和垂直都有额外的空间,而在API 10、8和7

  • 问题内容: 我需要使我的网页高度适合屏幕尺寸的高度,而无需滚动。 HTML CSS 问题答案: 一个快速,简洁,有效的独立解决方案,带有内联CSS,无jQuery要求。AFAIK也可以从IE9使用。

  • 我如何才能使它的应用程序是优化的所有屏幕?

  • 问题内容: 我正在使用SwiftUI绘制一个表,该表的行和列太多,无法容纳 屏幕宽度/高度。在这种情况下,我无法将视图对齐为 领先,但总是以某种方式居中。我该如何调整他们的领先地位?这 是绘制表格的视图: 这是GridStack: 这就是应用程序中的外观。请注意,边缘不适合 屏幕内部。即使我尝试滚动到那里,它也会反弹回来。 问题答案: 这是一个可能的方法演示(以及改进的方向,因为我 没有测试所有情