PreferenceFragmentCompat 影响其他片段的性能

Jan*_*ler 1 android android-preferences android-fragments preferencefragment android-motionlayout

我按照谷歌指南(https://developer.android.com/guide/topics/ui/settings)将 PreferenceFragmentCompat 添加到我的应用程序中。

此外,我还有另一个片段(Fragment A),其中包含 MotionLayout 中的 RecyclerView 。MotionLayout用于一个小动画,它通过onSwipe将RecyclerView扩展到垂直全屏。

现在我遇到以下问题:在调用 PreferenceFragment 然后返回到 Fragment A 后,MotionLayout onSwipe 动画的性能确实很差/滞后。根据日志,滑动时会多次调用 onDraw 方法。

有趣的事实是,当我还没有启动 PreferenceFragment 时,onDraw 方法只被调用一次(@onCreate)?!

此外,调用我的其他片段的任意片段 X 不会影响我的片段 A的性能?!

这可能是什么原因?我该如何继续我的调查?

Jan*_*ler 5

答案是:普通的 PreferenceFragmentCompat 主题包含垂直滚动条属性。Fragment A 中的 RecyclerView 调整了该属性,导致性能下降(由于重绘)。

我用属性scrollbar=none修复了它。

  • 这也解决了我的问题,谢谢!但我所做的是,我扩展了使用“PreferenceThemeOverlay.v14.Material”的首选项样式,并将“android:scrollbars”属性覆盖为“none”,并在“AppTheme”中将“preferenceTheme”设置为我创建的风格。这种方法可能比到处添加`android:scrollbars="none"`更好。 (3认同)