2

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

 2 years ago
source link: http://i.lckiss.com/?p=7541
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2021-10-25

之前没这种场景,这才发现。当一个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 代码下面。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK