首页 > 解决方案 > android recyclerView的视图项的onConfigurationChanged没有被调用

问题描述

android:configChanges="orientation|screenSize"

并且有一些自定义视图(RelativeLayout 的根),它有

    override fun onConfigurationChanged(newConfig: Configuration?) {
        super.onConfigurationChanged(newConfig)
        // do something to react
    }

在 scrollView 或 recyclerView 中使用相同的自定义视图。

在相同的活动/片段中,当将自定义视图放置在 scrollerViewonConfigurationChanged中时,它在旋转时被调用,但将其放置在 recyclerViewonConfigurationChanged中不会被调用。

代码除了一种使用scrollView,一种使用recyclerView外没有任何区别。这是一种已知的行为吗?或者如何使视图项onConfigurationChanged在recyclerView中被调用?

标签: android-recyclerviewandroid-orientationonconfigurationchanged

解决方案


事实证明,自定义视图在父容器中的放置方式有所不同。当添加到 recyclerview 视图持有者时,它首先被包装在 FrameLayout 中,因此还有一层视图似乎阻止了自定义视图的 onConfigurationChange 被调用(因为自定义视图不是视图持有者中的直接视图)。


推荐阅读