如何创建类似于instagram的探索标签的标签视图(类别)

时间:2018-12-13 12:09:16

标签: android android-xml android-tablayout

我要寻找的是创建标签布局,当滚动以下内容时可以扩展和折叠其高度。如果有人对我们如何实现有任何想法,那将是非常有帮助的。

展开时看起来像这样

崩溃时看起来像这样

1 个答案:

答案 0 :(得分:1)

由于未发布任何答案,因此我找到了解决方案,因此我将解决方案发布为该问题的答案。

所以,这就是我所做的。

我拍摄了两个回收站视图

  1. 用于显示类别(水平滚动)(id = rvCategoryList)
  2. 用于显示类别的项目(垂直滚动)(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.
    }
})

我希望这会对想要创建类似视图的人有所帮助。