如何在ConstraintLayout中设置视图可见性?

时间:2018-12-23 15:14:28

标签: android android-constraintlayout

几周前我开始使用ConstraintLayout,我发现(我相信)它存在许多错误。一个巨大的问题是我无法设定视野。以下代码不起作用:

<TextView
    android:visibility="gone"
    android:id="@+id/sampleView"
    style="@style/RSTextView"
    android:layout_width="0dp"
    android:text="sample text"
    android:textSize="20dp"
    android:shadowColor="#00000000"
    app:layout_constraintStart_toEndOf="@+id/privacyPolicyText"
    app:layout_constraintTop_toBottomOf="@+id/enterAgreementText1" />

您可以看到我已将其标记为“已消失”,但是当我使用布局检查器运行并检查视图时,可见性仍设置为可见。我不得不提出一些棘手的解决方案,其中包括当我希望视图消失时将alpha设置为0并将isEnabled设置为false,反之亦然。当我尝试以编程方式设置可见性时,我遇到了同样的问题:

sampleView.visibility = ConstraintLayout.GONE

这仍然会显示可见的视图。这使我发疯,因为我被迫提出多行hacky解决方案。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

我不知道我找到的以下链接是否与您的问题有关:
https://issuetracker.google.com/issues/37151322
https://issuetracker.google.com/issues/37139335
https://issuetracker.google.com/issues/37138937
但它们都是关于ConstraintLayout内部视图可见性的问题/错误的报告。
检查他们。

答案 1 :(得分:0)

@Pavan Varma指出,组可见性会覆盖视图的可见性。我认为,如果未设置组的可见性,则不会覆盖任何内容,但仍会覆盖。如果您在ContraintLayouts中的可见性方面遇到问题,请密切注意其组中覆盖它的可见性。如果该组的可见性未设置,则默认为可见,并覆盖视图的可见性。

答案 2 :(得分:0)

请注意在约束布局中使用组。使用群组时要注意的主要事情是

  • 组的可见性覆盖普通视图的可见性
  • 如果未设置组的可见性,则默认为可见,并覆盖视图的可见性。

在使用约束布局时,请谨慎使用组。我认为约束布局中几乎所有可见性问题都是由组引起的。