首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建类似于instagram的“探索”选项卡的选项卡视图(类别)

如何创建类似于instagram的“探索”选项卡的选项卡视图(类别)
EN

Stack Overflow用户
提问于 2018-12-13 12:09:16
回答 1查看 256关注 0票数 1

我要找的是创建选项卡布局,当在下面滚动内容时,可以扩展和折叠它的高度。如果有人知道我们如何能做到这一点,那将是非常有帮助的。

展开时,如下所示

塌陷的时候,它看起来像这样

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 09:51:45

由于没有发布任何答案,而且我找到了这些问题的解决方案,所以我把这个解决方案作为这个问题的答案。

所以,这就是我所做的。

我吃了两次recyclerViews

  1. 用于显示类别(水平滚动) (id = rvCategoryList)
  2. 用于显示类别的项(垂直滚动) (id = rvItemList)

现在使用了两个变量来跟踪最后一个滚动,并创建了一个设置rvCategoryList高度的方法

代码语言:javascript
复制
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
        }
    }
}

并将OnScrollListener应用于rvItemList,如下所示。

代码语言:javascript
复制
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.
    }
})

我希望这能帮助那些想要创造类似观点的人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53761546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档