在 recyclerview 中以编程方式更改布局管理器 android

Change layout Manager programatically in recylerview android

我想更改 layoutmanager stackFromEndreverseLayout 在视图膨胀时更改。我有嵌套的回收视图。因此,当 recylerview 膨胀时,我需要检查 recylerview 是否有比单个屏幕更多的项目,即我有多个项目要滚动。我会在图片中展示。

还有其他条件,当项目从底部边缘被切一半时。

.

在此基础上我想更改布局。有可能吗?怎么办? 我尝试了一些堆栈溢出 Example 但它不起作用。那么有人知道如何实现吗?

所以我想知道是否有任何侦听器在 RecyclerView 第一次完成放置项目时调用,从而可以设置布局管理器。

我假设您有一个父视图用于您的回收站视图,例如NestedScrollView。然后你需要在屏幕上创建 NestedScrollView 后获取它的高度

var nestedScrollViewHeight = 0
yourNestedScrollView.viewTreeObserver.addOnGlobalLayoutListener(
            object : ViewTreeObserver.OnGlobalLayoutListener {
                override fun onGlobalLayout() {
                    yourNestedScrollView.viewTreeObserver.removeOnGlobalLayoutListener(this)
                    nestedScrollViewHeight = yourNestedScrollView.height
                }
            }
        )

然后你可以检查这个NestedScrollView高度是否超过你的屏幕高度,你可以在Activity

中使用windowManager获取你的屏幕高度
val screenHeight = windowManager.currentWindowMetrics.bounds.height()

因此,在获得 screenHeightnestedScrollViewHeight 之后,您可以减去以检查 nestedScrollViewHeight 是否大于 screenHeight