android - 如何使 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。然后结果如下。
我理解的问题是尺寸改变时的回收器视图不是重新渲染/重新布局整个视图,当应用程序窗口的大小改变时,Viewholder 持有人的大小没有更新。
我应该使用什么方法来强制 recyclerView 根据新的屏幕尺寸进行调整?
解决方案
推荐阅读
- regex - gnuplot:使用正则表达式解析字符串
- google-api - Youtube V3 API - 按 categoryId 过滤的频道 api 零结果
- javascript - AngularJS - 如何使用 .js 调用另一个 html 页面
- java - 打印堆栈跟踪说“警告”而不是“错误”
- relationship - EER图中的多对多关系,N:M vs N:M
- python - 如何将一个元组分成两个独立的列表?
- vert.x - 如何在 vert.x 中执行长阻塞操作?
- javascript - 在角度材料中选择 mat-option 时调用 ngmodelchange
- influxdb - 如何拆分标签键和标签值
- c - 函数调用中指向 const 的指针