如何创建类似于 instagram 的浏览选项卡的选项卡视图(类别)
How to create a tab view (category) similar to instagram's explore tab
我正在寻找的是创建可以在滚动下方内容时展开和折叠其高度的选项卡布局。如果有人对我们如何实现它有任何想法,那将非常有帮助。
展开后是这样
折叠后的样子
由于没有发布任何答案,而我找到了解决这些问题的方法,因此我将解决方案发布为该问题的答案。
所以,这就是我所做的。
我拿了两个recyclerViews
- 用于显示类别(水平滚动)(id = rvCategoryList)
- 用于显示类别的项目(垂直滚动)(id = rvItemList)
现在已经使用两个变量来跟踪上次滚动并创建了一个方法来设置 rvCategoryList 的高度
var lastY: Int = 0
var counter = 0
private fun setCategoryViewHeight(dy: Int) {
val params = rvCategoryList.layoutParams
if ((dy > 0 && lastY >= 0) || (dy < 0 && lastY <= 0)) {
counter = 0
params.height = params.height - dy
if (dy > 0) {
if (params.height < rvHeight / 1.7) {
params.height = (rvHeight / 1.7).toInt()
}
} else {
if (params.height > rvHeight) {
params.height = rvHeight
}
}
rvCategoryList.layoutParams = params
lastY = dy
} else {
counter++
if (counter > 2) {
counter = 0
lastY = 0
}
}
}
并且已经在 rvItemList 上应用了 OnScrollListener,如下所示。
rvItemList.clearOnScrollListeners()
rvItemList.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
lastY = 0 //As the scroll state has been changed reinitializing the lastY variable.
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
setCategoryViewHeight(dy) //Setting height everytime.
}
})
我希望这对想要创建类似视图的人有所帮助。
我正在寻找的是创建可以在滚动下方内容时展开和折叠其高度的选项卡布局。如果有人对我们如何实现它有任何想法,那将非常有帮助。
展开后是这样
折叠后的样子
由于没有发布任何答案,而我找到了解决这些问题的方法,因此我将解决方案发布为该问题的答案。
所以,这就是我所做的。
我拿了两个recyclerViews
- 用于显示类别(水平滚动)(id = rvCategoryList)
- 用于显示类别的项目(垂直滚动)(id = rvItemList)
现在已经使用两个变量来跟踪上次滚动并创建了一个方法来设置 rvCategoryList 的高度
var lastY: Int = 0
var counter = 0
private fun setCategoryViewHeight(dy: Int) {
val params = rvCategoryList.layoutParams
if ((dy > 0 && lastY >= 0) || (dy < 0 && lastY <= 0)) {
counter = 0
params.height = params.height - dy
if (dy > 0) {
if (params.height < rvHeight / 1.7) {
params.height = (rvHeight / 1.7).toInt()
}
} else {
if (params.height > rvHeight) {
params.height = rvHeight
}
}
rvCategoryList.layoutParams = params
lastY = dy
} else {
counter++
if (counter > 2) {
counter = 0
lastY = 0
}
}
}
并且已经在 rvItemList 上应用了 OnScrollListener,如下所示。
rvItemList.clearOnScrollListeners()
rvItemList.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
lastY = 0 //As the scroll state has been changed reinitializing the lastY variable.
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
setCategoryViewHeight(dy) //Setting height everytime.
}
})
我希望这对想要创建类似视图的人有所帮助。