gpt4 book ai didi

android - 弹出窗口仅阻止其后面的部分 View 层次结构

转载 作者:行者123 更新时间:2023-11-29 17:57:03 27 4
gpt4 key购买 nike

我有一个按以下方式工作的应用程序:

  • 屏幕的上半部分是应用程序的“主要”部分,用户可以与之交互的实际内容显示在此处。

  • 屏幕的下半部分(可能是屏幕高度的 1/4 左右)是一个导航轮。用户可以转动这个轮子来改变显示的上半部分。转动时,整个上半部分会被其他东西代替。

这两部分是使用 fragment 实现的。下部(导航轮)只是一个静态 fragment ,显示可以旋转的 View 层次结构。上半部分(内容展示区)也是一个fragment,只是转动滚轮可以切换到其他fragment。

现在我想要的是,当应用程序启动时,我们正在显示一个免费内容部分,但是当用户将滚轮转到其他内容部分之一时,会弹出一个窗口来阻止内容显示区域,说“购买Google Play 上的这种模式。”这个弹窗显然应该挡住它后面的内容区域,所以用户可以看到弹窗后面的一些显示区域,但是在他/她完成 Google Play 交易之前他/她不能与之交互。如果内容区域的 View 也可以变灰就好了。但是,不应阻止屏幕底部的导航轮,以便用户能够导航回到他/她来自的地方或进一步导航到另一个内容部分。我如何制作一个弹出窗口来阻止顶部 View 层次结构的交互,但保持较低的 View 层次结构不变?

据我所知,不可能使用 the PopupWindow class创建一个弹出窗口,只会阻止它后面的一些屏幕。它似乎总是阻止这一切。

这是一个插图设计。 “P”代表付费,“F”代表免费。在第二个屏幕上,应用程序应忽略内容部分(灰色窗口后面)上的任何按下,但导航轮仍应能够转动。

谢谢。

最佳答案

On the second screen the app should ignore any press on the content section (behind the grey window), but the navigation wheel should still be able to turn.

您可以制作一个叠加层并将其设置为吃掉所有触摸事件(通过在其上设置 OnTouchListener 或使用带有 onTouch() 的自定义布局方法重写以返回 true) 并将其放在正常 fragment 内容的顶部。这样,实际内容将在下方可见,但不会收到任何触摸事件。您还可以像在图像中一样向叠加层添加一些内容。

此外,由于叠加层仅覆盖付费 fragment ,因此用户可以触摸底部的轮子(我不知道该轮子实际上如何与您的 fragment 交互,因此上述方法可能不起作用)。

我做了一个小的基本样本作为例子(你可以找到它 here )。

It would be nice if the views of the content area could be greyed out as well.

您可以创建一个递归方法来遍历付费 fragment 的 View 层次结构,并在遇到的 View 上调用 View.setEnabled(false)

关于android - 弹出窗口仅阻止其后面的部分 View 层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com