更改片段(子片段)时 RecyclerView 中的奇怪叠加

Posted

技术标签:

【中文标题】更改片段(子片段)时 RecyclerView 中的奇怪叠加【英文标题】:weird overlay in RecyclerView when changing fragments (child frags) 【发布时间】:2021-09-10 05:06:50 【问题描述】:

编辑 1:recyclerview 具有固定大小(300x500dp),这是因为我想检查叠加层是适用于 RecyclerView 还是整个 ViewGroup


我遇到了片段和布局的问题,基本上我的应用使用子片段; 这是粗略的层次结构:

Activity
    |-> FrameLayout (MainFragment, RootView: CoordinatorLayout)
        |-> FrameLayout (ChildFragment, RootView: RelativeLayout)
        |   |-> RecyclerView
        |-> LinearLayout (CustomSearchView)
        |   |-> CardView
        |-> BottomAppBar
        |   |-> BottomNavigationView
        |-> FloatingActionButton

这里是代码的要点:https://gist.github.com/AwaisKing/12df079991558257307f40c8fa6a7d2d

我正在尝试 replaceaddToBackStack 一个片段,但每当我这样做时,它都会在 RecyclerView 上应用一个光覆盖

我尝试将backgrounds 添加到布局和视图中,但我没有运气。

我希望有人可以帮助我解决这个问题

【问题讨论】:

您能否更简洁地了解每个布局包含的内容? 我马上编辑层次结构 你需要解释什么是“光覆盖”,并展示一些布局和代码。您的“粗略层次结构”不是我们开发 android 应用程序的方式。 @dominicoder 看到列表视图了吗?它会改变背景颜色,如果我将背景设置为任何其他颜色,它会在背景上添加新的色调或其他东西。 检查项目视图的布局、您的应用主题,和/或在 recyclerview 上将 focusable 设置为 false(看起来它正在获得焦点)。 【参考方案1】:

有些地方你使用了 CoordinatorLayout,这基本上是一个 FrameLayout,所以如果你没有正确配置它,视图会被覆盖。一目了然,它们是frag_main.xmlint_frag_search.xml

还有一件事,我认为你应该只在确实需要时才使用子片段

【讨论】:

nvm 实际上是焦点突出问题,感谢@dominicoder【参考方案2】:

感谢@dominicoder 帮助我解决了这个问题! comment #120480134

有一个属性android:defaultFocusHighlightEnabled 我所要做的就是将它设置为false

【讨论】:

以上是关于更改片段(子片段)时 RecyclerView 中的奇怪叠加的主要内容,如果未能解决你的问题,请参考以下文章

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?

在recyclerview片段Reandroid中屏幕旋转后进度条不显示

共享元素转换在父片段和子片段之间不起作用(嵌套片段)

如何在单击 RecyclerView 项目时从一个片段移动到另一个片段

从其他活动返回到同一片段时,如何保存和恢复片段中 RecyclerView 的滚动位置?

在通知单击时将项目添加到片段内的 recyclerview