首页 > 解决方案 > 如何使 Recycler View 对 MultiWindow/PIP 中的 SizeChange 做出反应?

问题描述

我使我的应用程序与多窗口和 PIP(画中画)兼容。

我有一个类型为 GridLayout Holder 的 Recycler View,每个 View Holder 都有 TextView 和 ImageView。

我提供了我的持有人的尺寸DP(仅供参考,即它应该根据新的窗口大小调整大小),默认情况下 recyclerView 不处理onSizeChanged()呼叫。所以我创建了一个 customRecycler 来处理onSizeChanged()调用。但我不确定如何处理 recyclerView 的大小变化,因为大小变化我也应该重新渲染所有 View-holder(只是猜测)。

class CustomRecyclerView : RecyclerView {

    constructor(context: Context) : super(context)
    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)

    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        super.onSizeChanged(w, h, oldw, oldh)
       /*
         post {
          requestLayout()  // forcing relayout but this also doesn't work with or without post.
       }
       */
    }
}

如果我以全屏模式启动应用程序,然后切换到 PIP。然后结果如下。

预期结果: 结果 1

问题: 在此处输入图像描述

我理解的问题是尺寸改变时的回收器视图不是重新渲染/重新布局整个视图,当应用程序窗口的大小改变时,Viewholder 持有人的大小没有更新。

我应该使用什么方法来强制 recyclerView 根据新的屏幕尺寸进行调整?

标签: androidandroid-recyclerviewmulti-window

解决方案


推荐阅读