如何在MotionLayout场景中设置LinearProgressIndicator的高度?
问题:MotionLayout中无法动态将LinearProgressIndicator高度变为0
我在MotionLayout里使用了LinearProgressIndicator,希望把它的高度从默认值调整为0。直接设置layout_height完全没有效果,查资料得知trackThickness是正确的调整属性,但在MotionScene中设置该值也无法改变进度条的高度。
我尝试的初始代码
<?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"> <ConstraintSet android:id="@+id/start"> <Constraint android:id="@id/now_playing_progress"> <CustomAttribute motion:attributeName="trackThickness" motion:customDimension="?attr/trackThickness" /> </Constraint> </ConstraintSet> <ConstraintSet android:id="@+id/end"> <Constraint android:id="@id/now_playing_progress"> <CustomAttribute motion:attributeName="trackThickness" motion:customDimension="0dp" /> </Constraint> </ConstraintSet> <Transition motion:constraintSetEnd="@id/end" motion:constraintSetStart="@+id/start" > </Transition> </MotionScene>
编辑:尝试其他方案仍无效
我试了另一种解决方案的代码,依旧没有效果:
布局文件
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <merge> <!-- 用于设置约束和交互的占位View --> <View android:id="@+id/constraint_layout_placeholder" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_constraintTop_toTopOf="parent" /> <com.google.android.material.progressindicator.LinearProgressIndicator android:id="@+id/now_playing_progress" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="@id/constraint_layout_placeholder" android:progress="@{progress, default=40}" android:progressTint="@color/colorPrimaryDark" /> <!-- 省略其他代码 --> </merge> </layout>
MotionScene文件
<?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"> <ConstraintSet android:id="@+id/start"> <Constraint android:id="@id/constraint_layout_placeholder"> <PropertySet android:visibility="visible" /> </Constraint> </ConstraintSet> <ConstraintSet android:id="@+id/end"> <Constraint android:id="@id/now_playing_progress" android:layout_height="0dp" motion:layout_constraintBottom_toBottomOf="parent" motion:layout_constraintHeight_percent="0" motion:layout_constraintTop_toTopOf="parent" /> <Constraint android:id="@id/constraint_layout_placeholder"> <PropertySet android:visibility="invisible" /> </Constraint> </ConstraintSet> <Transition motion:constraintSetEnd="@id/end" motion:constraintSetStart="@+id/start" > </Transition> </MotionScene>
内容的提问来源于stack exchange,提问作者Augier
相关产品推荐
相关产品推荐

