android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别)

标签 android android-xml android-tablayout

我正在寻找的是创建可以在滚动下方内容时展开和折叠其高度的选项卡布局。如果有人对我们如何实现它有任何想法,那将非常有帮助。

展开后是这个样子

折叠后的样子

最佳答案

由于没有发布答案,但我找到了这些问题的解决方案,因此我将解决方案作为对这个问题的答案发布。

所以,这就是我所做的。

我拿了两个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.
    }
})

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

关于android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53761546/

相关文章:

android - 将录制的音频保存到文件 - OpenSL ES - Android

Android Listview Rows 需要全屏

java - 关于上下文 FLAG_ACTIVITY_NEW_TASK 的错误

android - Android Studio Linter 是否提供查找默认 XML 布局值的选项?

android - 如何在 TabLayout 中设置图标大小?

Android EditText 和 Button 在同一行

Android 创建带有图像圆顶角的 Drawable XML

android - 如何在 XML 中实现 OnTouch 监听器

android - Android TabLayout Tabs Click 面临问题

android - 自定义 TabLayout 按钮