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

How to check if the items in LazyColumn is too few for the height of the screen?

由于 LazyColumn 没有滚动条,我尝试了这个

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

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

当您需要连续读取任何状态并根据该状态产生一些值时,您应该使用derivedStateOf来防止冗余重组。

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) {
    // ...
}