【问题标题】:Make constraint layout untouchable使约束布局不可触碰
【发布时间】:2020-03-04 18:43:05
【问题描述】:

我有两个布局,manageLayout 和 mainLayout。他们在各个方面都对父母有限制。我需要一次在mainLayout的顶部有manageLayout,另一次在manageLayout的顶部有mainLayout。当然,在其中一个上使用 visibility=gone 是有道理的,但我需要在另一个背景上使用一种布局。问题:后台布局处理来自顶部布局的事件。当另一个布局上升时,如何使较低的布局(和他的元素)不可触及? 布局树图像: LayoutTreeImg 代码示例,我想禁用较低布局的通信:https://pastebin.com/PeL7u3YD(不仅isSaveEnabled=false 无效,isEnabled=false 也无效)

【问题讨论】:

  • 能否提供相关源码?这有没有可能回答你的问题:stackoverflow.com/a/34391262?
  • 在帖子中添加了布局树,我不明白,因为我需要粘贴代码 - 帖子中描述的所有问题。
  • 这个答案是关于如何在另一个布局的顶部制作一个布局。我已经使用visibility=gone\visible 完成了它,但我仍然能够与较低的布局进行通信

标签: android xml layout android-constraintlayout


【解决方案1】:

如果您只需要解释。

一旦您为mainLayoutmanageLayout 初始化了您的视图,您将需要在这两个视图上都设置一个空的onClickListener。基本上,布局应该得到点击,但什么也不做。通过这种方式,您可以阻止 Front 视图下方的布局和小部件被点击。

现在为了将视图切换到前面,请维护一个布尔值以了解哪个视图在前面,然后在您的按钮上单击设置另一个视图 bringToFront()(或者如果需要,请尝试提到 here 的其他一些方法)并且不要不要忘记切换布尔值。

如果这对您有用,或者您对此有任何问题,请告诉我。

【讨论】:

  • 我认为,可以通过将isClickable=false 设置为较低的布局来替换它,但它没有效果 - 我能够与较低的布局进行通信。让我带一些评论来回答 - 我使用 visibility=gonevisibility=visible 将布局带到其他顶部来管理布局。
  • 最上面的视图必须截取下面的视图。这就是您需要在 onFront 视图上使用 clickListener 的原因。如果您替换较低的布局将获得点击,这就是您的意思吗?
  • 我需要较低的布局而不是顶部布局的点击次数
  • 关于您的问题“如何在另一个布局上升时使较低的布局(和他的元素)不可触及?”就是我想说的,如果你的“上升布局”覆盖了整个屏幕,你只需要在那个“上升布局”上设置一个点击监听器,这样点击就可以防止所有点击较低的布局。
【解决方案2】:

根据我的认知,你可以把setEnable(false)做低布局。我希望它会起作用。

【讨论】:

  • 我按照你告诉我的做了,但它不起作用 - 尽管禁用了它,我仍然可以触摸和交流较低的布局
  • 你能提供你的代码吗?
  • 在那里你可以看到我的函数将一个布局放到另一个布局的顶部:(pastebin.com/PeL7u3YD)
  • 该页面已被删除。
  • 尝试对下部布局的所有元素进行setenable(false)。
猜你喜欢
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2021-06-10
  • 1970-01-01
相关资源
最近更新 更多