如何创建一个标签视图(类别)类似Instagram的的探索标签

问题描述 投票:1回答:1

我正在寻找的是创建标签的布局,可以展开和折叠是高度滚动下面的内容时。如果任何人有关于我们如何能够实现它的主意比这将是很有益的。

展开时它看起来像这样

折叠时它看起来像这样

android android-xml android-tablayout
1个回答
1
投票

由于没有答案被张贴,我找到了解决这些我张贴的溶液作为这个问题的答案。

所以,这里是我做了什么。

我已经采取了两个recyclerViews

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

我希望这会帮助别人谁想要创建一个类似的观点。

© www.soinside.com 2019 - 2024. All rights reserved.