Constraint中的android:visibility和PropertySet android:visibility有什么区别

What is the different between android:visibility and PropertySet android:visibility in Constraint

我刚开始使用 MotionLayout。经过测试,我发现我可以同时使用 android:visibility="gone"PropertySet android:visibility="gone" 来隐藏视图。

<Constraint android:id="@+id/text_video_title"
    android:visibility="gone"
    >
    <PropertySet android:visibility="gone" />
</Constraint>

我检查了 MotionLayout document 但它没有提到。主题之间有什么不同吗?可能使用 PropertySet android:visibility

有一些好处

好问题。 默认情况下,布局文件中存在的约束被用作约束集中的默认值。

ConstraintLayout 或 MotionLayout 的布局文件可以包含 3 种类型的属性。

  1. 影响布局的约束
  2. 应用 post 布局的视图变换,例如 scaleX、旋转
  3. 子类特定属性,例如文本

约束集

如果您在 <Constraint> 标签中有多个 android:id 属性。 它消除了所有潜在的约束(类型 1 和 2)。这意味着您需要定义布局该视图所需的所有约束(例如 layout_constraintTop_toTopOf=.. )

如果您只有 id 并且有子部分,例如 <PropertySet> <Transform> <layout> 它只会擦除您定义的那些部分。

2.1 添加了 <ConstraintOverride>,它只会覆盖您放置的标签,但您不能覆盖 layout_constraintXXX 标签。