当另一个 View 或 Fragment 位于 ListView 上方时,如何防止 ListView 接收点击?

Posted

技术标签:

【中文标题】当另一个 View 或 Fragment 位于 ListView 上方时,如何防止 ListView 接收点击?【英文标题】:How do I prevent a ListView from receiving clicks when another View or Fragment is over it? 【发布时间】:2021-12-13 23:05:05 【问题描述】:

我有一个显示一些数据的 ListView。也可以单击行。 我在屏幕底部还有一个自定义片段,它一直“悬停”在 ListView 上。我希望这个 Fragment 也能接收点击事件,这样我就可以在它被点击时做一些事情。

问题是我不知道如何做到这一点,并且 ListView 最终获得了点击,即使 Fragment 覆盖了该特定行。

基本上,我想确保当 ListView 顶部有一个 Fragment(甚至另一个 View)时,该 Fragment 在我单击它时注册单击,而不是 ListView。 我该怎么做?

【问题讨论】:

请发布相关代码,以便我们看到您在做什么 【参考方案1】:

如果另一个 View 或 Fragment 位于其上方,您可以通过将布局根部的 android:clickable 属性设置为 true 来防止点击到达,该布局的根部显示在其他可点击的内容之上。

Fragment 中显示在其他内容之上的扩展布局也是如此,只需在扩展布局的根上将 android:clickable 设置为 true。

android:clickable="true"

【讨论】:

对于复制和粘贴团队,即我,应该是 android:clickable="true"。顺便说一句,完美的解决方案 - 为我修好了!

以上是关于当另一个 View 或 Fragment 位于 ListView 上方时,如何防止 ListView 接收点击?的主要内容,如果未能解决你的问题,请参考以下文章

当 getView() 为 null 时,即 onCreateView() 之前或 onDestroyView() 之后,无法访问 Fragment View 的 LifecycleOwner [重复

android.view.InflateException: Binary XML file line #33: Error inflating class fragment

FragmentTabHost切换Fragment时避免UI重新加载

Fragment小结

Android - Fragment中CoordinatorLayout状态栏下的工具栏

Android-Kotlin在Fragment获取View