我将ConstraintLayout用作父布局和set android:animateLayoutChanges="true"
。当更改某些嵌套视图的可见性时,我将其用作其他视图背景的图层(androidx.constraintlayout.helper.widget.Layer)展示出来了。没有android:animateLayoutChanges就可以了。
我还尝试了“组”小部件的requestLaout()
方法中的post()
(指的是用于显示/隐藏操作的嵌套视图)-> group.post { binding.bg.parent.requestLayout() }
,它可以工作。但是这样一来,Layer会在短时间后显示,我不希望这种隐藏和显示发生。
这是我的XML文件:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:background="@color/defaultBackground">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.06" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.94" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="@dimen/action_bar_padding" />
<androidx.constraintlayout.helper.widget.Layer
android:id="@+id/bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/bg_container"
android:paddingLeft="@dimen/margin_high"
android:paddingTop="@dimen/margin_low"
android:paddingRight="@dimen/margin_high"
android:paddingBottom="@dimen/margin_very_high"
app:constraint_referenced_ids="radioGroup,submit"
tools:ignore="MissingConstraints" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_high"
app:layout_constraintLeft_toLeftOf="@id/left"
app:layout_constraintRight_toRightOf="@id/right"
app:layout_constraintTop_toTopOf="@id/top">
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/individual"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:checked="true"
android:layoutDirection="rtl"
android:text="@string/radio_individual_text"
android:textColor="@color/colorGrayDarker"
android:textSize="@dimen/text_size_mini" />
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/legal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layoutDirection="rtl"
android:text="@string/radio_legal_text"
android:textColor="@color/colorGrayDarker"
android:textSize="@dimen/text_size_mini" />
</RadioGroup>
<epeyk.mobile.baseutil.views.TextViewCustom
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_very_high"
android:text="@string/nation_id_description_text"
android:textColor="@color/colorGrayDark"
android:textSize="@dimen/text_size_very_mini"
app:customFont="@font/iransans_farsi_numbers"
app:layout_constraintLeft_toLeftOf="@id/left"
app:layout_constraintRight_toRightOf="@id/right"
app:layout_constraintTop_toBottomOf="@id/radioGroup" />
<epeyk.mobile.baseutil.views.EditTextCustom
android:id="@+id/nationalId"
style="@style/mEditTextStyle"
android:layout_width="0dp"
android:layout_height="@dimen/edit_text_height_medium"
android:layout_marginTop="@dimen/margin_low"
android:background="@drawable/bg_input"
android:hint="@string/national_id_description"
android:inputType="number"
app:customFont="@font/iransans_farsi_numbers"
app:forceGravity="true"
app:layout_constraintEnd_toEndOf="@id/right"
app:layout_constraintStart_toEndOf="@id/confirm"
app:layout_constraintTop_toBottomOf="@id/text1" />
<epeyk.mobile.baseutil.views.TextViewCustom
android:id="@+id/confirm"
android:layout_width="@dimen/button_width_very_small"
android:layout_height="@dimen/button_height_low"
android:layout_marginRight="@dimen/margin_high"
android:background="@drawable/btn_radius_primary"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/colorWhite"
android:textSize="@dimen/text_size_small"
app:forceGravity="true"
app:layout_constraintBottom_toBottomOf="@id/nationalId"
app:layout_constraintEnd_toStartOf="@id/nationalId"
app:layout_constraintStart_toStartOf="@id/left"
app:layout_constraintTop_toTopOf="@id/nationalId" />
<epeyk.mobile.baseutil.views.TextViewCustom
android:id="@+id/text2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_very_high"
android:text="@string/company_info_text"
android:textColor="@color/colorGrayDark"
android:textSize="@dimen/text_size_very_mini"
app:layout_constraintLeft_toLeftOf="@id/left"
app:layout_constraintRight_toRightOf="@id/right"
app:layout_constraintTop_toBottomOf="@id/nationalId" />
<epeyk.mobile.baseutil.views.EditTextCustom
android:id="@+id/companyName"
style="@style/mEditTextStyle"
android:layout_width="0dp"
android:layout_height="@dimen/edit_text_height_medium"
android:layout_marginTop="@dimen/margin_low"
android:background="@drawable/bg_input"
android:enabled="false"
android:hint="@string/company_name"
app:forceGravity="true"
app:layout_constraintLeft_toLeftOf="@id/left"
app:layout_constraintRight_toRightOf="@id/right"
app:layout_constraintTop_toBottomOf="@id/text2" />
<epeyk.mobile.baseutil.views.TextViewCustom
android:id="@+id/submit"
android:layout_width="@dimen/button_width_small"
android:layout_height="@dimen/button_height_low"
android:layout_marginTop="@dimen/margin_very_high"
android:layout_marginBottom="@dimen/margin_high"
android:background="@drawable/btn_radius_primary"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="@string/confirm_and_continue"
android:textColor="@color/colorWhite"
android:textSize="@dimen/text_size_small"
app:forceGravity="true"
app:layout_constraintLeft_toLeftOf="@id/left"
app:layout_constraintRight_toRightOf="@id/right"
app:layout_constraintTop_toBottomOf="@id/companyName" />
<androidx.constraintlayout.widget.Group
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="text1,nationalId,confirm,text2,companyName"
tools:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>