背景
近日,在接手新项目的代码,其中布局使用的是MotionLayout,奈何在此之前根本使用过他,于是发现了一个巨坑的问题,其中就是,在viewModel的回调中设置布局为显示状态即 loadView.setVisibility(View.VISIBLE);
发现代码已经执行完毕了,但是无论如何就是不显示。
解决
找到MotionLayout布局的layoutDescription属性MotionScene文件,添加忽略即可 motion:visibilityMode="ignore"
关键代码
<Constraint android:id="@id/load_view">
<PropertySet
motion:applyMotionScene="false"
motion:visibilityMode="ignore" />
</Constraint>
全部代码
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools">
<Transition
>
<!--省略代码-->
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint android:id="@id/load_view">
<PropertySet
motion:applyMotionScene="false"
motion:visibilityMode="ignore" />
</Constraint>
<!--省略代码-->
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint android:id="@id/load_view">
<PropertySet
motion:applyMotionScene="false"
motion:visibilityMode="ignore"/>
</Constraint>
<!--省略代码-->
</ConstraintSet>
</MotionScene>