cha*_*ura 6 android android-layout android-constraintlayout android-app-bundle
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>
Run Code Online (Sandbox Code Playgroud)
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.
找到了解决此问题的方法,我希望这可以为其他人节省时间。这很奇怪,但这个问题的原因是在动态模块中使用了ConstraintLayout - Group。
所以修复是在java代码中,一旦你得到了对组的引用,然后使用如下的int数组设置引用ID,
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});
Run Code Online (Sandbox Code Playgroud)
在此之后,它按预期工作。因此无需设置组中单个视图的可见性。
| 归档时间: |
|
| 查看次数: |
4336 次 |
| 最近记录: |