在 recyclerview 中以编程方式更改布局管理器 android
Change layout Manager programatically in recylerview android
我想更改 layoutmanager stackFromEnd 和 reverseLayout 在视图膨胀时更改。我有嵌套的回收视图。因此,当 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()
因此,在获得 screenHeight
和 nestedScrollViewHeight
之后,您可以减去以检查 nestedScrollViewHeight
是否大于 screenHeight
我想更改 layoutmanager stackFromEnd 和 reverseLayout 在视图膨胀时更改。我有嵌套的回收视图。因此,当 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()
因此,在获得 screenHeight
和 nestedScrollViewHeight
之后,您可以减去以检查 nestedScrollViewHeight
是否大于 screenHeight