抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

ConstraintLayout Group 组件导致关联 view 无法管理初始化 visibility 状态的问题

之前没这种场景,这才发现。当一个view 被一个 Group 关联后,再单独对 view 在 xml 中设置 visibility 是无效的。

例如这个 group :

<androidx.constraintlayout.widget.Group
android:id="@+id/tool_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:constraint_referenced_ids="config_tab,iv_search,cb_select_all" />

此时再对其中一个 view 比如 cb_select_all 进行 xml 布局上的 visibility 设置会无法生效,原因是在这个布局的绘制过程中 Group 会对其关联 view 的 visibility 进行重新设置。所以解决办法是,再增加一个 Group 只关联这个 cb_select_all :

<!--  用于处理 checkbox 的初始状态 优先级高于 tool_group  -->
<androidx.constraintlayout.widget.Group
    android:id="@+id/tool_init_cb"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
    app:constraint_referenced_ids="cb_select_all" />

在 xml 层级上 tool_init_cb 必须在 tool_group 上层,也就是必须写在 tool_group xml 代码下面。

以上。


本站由以下主机服务商提供服务支持:

0条评论

发表评论