当我展示一个片段时,下面的对象仍然响应点击

本文关键字:对象 响应 片段 一个 | 更新日期: 2023-09-27 18:03:40

我有一些片段是视图页的一部分。这些都很好。然而,在视图页中的片段的顶部,我想把片段放在它们的顶部(即嵌套或子片段)。因此,在父片段的OnCreateView中,我继续声明子片段,然后马上隐藏它。

        optionsFragment = new TrackOptions();
        var trans = Activity.SupportFragmentManager.BeginTransaction();
        trans.Add(trackOptionsContainer.Id, optionsFragment, "Track Options");
        trans.Hide(optionsFragment);
        trans.Commit();

然后,在父片段中,当我想显示这个子片段时,我只需调用显示它,当我想让它消失时,我再次隐藏它。

起初,我注意到孩子是透明的,我可以透过它看到父母。如果我设置一个背景,这个问题就解决了。

然而,现在我注意到,当我查看子节点并单击屏幕时,父节点仍然会响应那些不可见的按钮的事件(单击事件),因为它们在父节点上,这是通过显示子节点来覆盖的。

我怀疑这是因为我需要在显示子元素时显式地隐藏父元素。这是正确的吗?如果是这样的话,下面是我不明白的两个问题。1. 我不想每次显示父类时都重新实例化它。我只想要一个实例,是创建时,应用程序启动。如果我必须显式隐藏它,我如何再次显示它,而使用片段类的相同实例?2. 我读了这么多不同的选项来获得一个事件,当一个片段显示,我已经尝试了他们中的大多数(OnHiddenChanged, OnResume, UserVisibleHint),但他们似乎没有一个工作得很好与这个子片段设置。当我的子片段显示时,我甚至使用什么?

谢谢!

迈克

当我展示一个片段时,下面的对象仍然响应点击

只需将您的片段设置为可点击的,因此它将不允许点击通过。不要担心,因为片段的背景不是可点击的背景,所以您不会看到任何点击。

让你的片段XML父布局android:clickable="true"现在任何点击都不会发送到fragment back stack