Constraint Layout - Group visibility is not working inside dynamic module

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

Has anyone experienced issues with ConstraintLayout group visibility? I'm using ConstraintLayout 1.1.3 and I'm setting the visibility of group in both XML layout and java code. But it does not change the visibility status. It is always visible.

This is the layout file

 <?xml version="1.0" encoding="utf-8"?>  <android.support.constraint.ConstraintLayout     xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:app="http://schemas.android.com/apk/res-auto"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent">  <ImageView     android:id="@+id/iv_message_icon_activity_dictionary"     android:layout_width="@dimen/message_icon_width"     android:layout_height="@dimen/message_icon_height"     android:layout_marginBottom="@dimen/message_text_view_margin_top"     android:contentDescription="@string/app_name"     android:src="@drawable/icon_error"     app:layout_constraintBottom_toTopOf="@+id/tv_message_activity_dictionary"     app:layout_constraintEnd_toEndOf="@id/tv_message_activity_dictionary"     app:layout_constraintStart_toStartOf="@id/tv_message_activity_dictionary" />  <TextView     android:id="@+id/tv_message_activity_dictionary"     android:layout_width="0dp"     android:layout_height="wrap_content"     android:layout_marginEnd="20dp"     android:layout_marginLeft="20dp"     android:layout_marginRight="20dp"     android:layout_marginStart="20dp"     android:gravity="center"     android:textColor="@color/black"     android:textSize="@dimen/medium_text_size"     app:layout_constraintBottom_toBottomOf="parent"     app:layout_constraintEnd_toEndOf="parent"     app:layout_constraintStart_toStartOf="parent"     app:layout_constraintTop_toTopOf="parent"     tools:text="@string/msg_no_internet" />  <Button     android:id="@+id/btn_try_again_activity_dictionary"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginTop="@dimen/try_again_button_margin_top"     android:background="@drawable/rounded_button"     android:minHeight="30dp"     android:minWidth="@dimen/try_again_button_width"     android:padding="10dp"     android:text="@string/btn_try_again"     android:textAllCaps="false"     android:textColor="@color/white"     android:textSize="@dimen/text_size_5"     app:layout_constraintEnd_toEndOf="parent"     app:layout_constraintStart_toStartOf="parent"     app:layout_constraintTop_toBottomOf="@id/tv_message_activity_dictionary" />  <android.support.constraint.Group     android:id="@+id/group_component_activity_dictionary"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:visibility="gone"     app:constraint_referenced_ids="btn_try_again_activity_dictionary,tv_message_activity_dictionary,iv_message_icon_activity_dictionary" />  </android.support.constraint.ConstraintLayout> 

What could be the reason for this?

UPDATE:

I forgot to mention that I'm using this layout inside of a dynamic module. Also I tested this using in the base module and it is working as expected, but not in a dynamic module. So finally I figured out the reason for the issue. Also when I debugged the code and evaluated this expression (group.getVisibility == View.GONE), it gave me TRUE.(even though the views inside the group are still visible)

Any suggestion is appreciated.

回答1:

Found a fix for this issue and I hope this will save time for someone else. It's strange but the reason for this issue is using the ConstraintLayout - Group, inside a dynamic module.

So the fix is in java code, once you got a reference to the group then set the reference ids using int array like below,

Group group = findViewById(R.id.group); group.setReferencedIds(new int[]{R.id.btn_try_again_activity_dictionary, R.id.tv_message_activity_dictionary, R.id.iv_message_icon_activity_dictionary}); 

After this, it works as expected. Therefore no need to set visibility of individual views in the group.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!