Как установить конечное состояние в коде Java MotionLayout

#android #android-motionlayout

Вопрос:

Я использую MotionLayout

Я хочу управлять @ id/end набором ограничений в Java

например

 <ConstraintSet android:id="@ id/end">
        <Constraint
            android:id="@ id/item_c"
            motion:layout_constraintWidth_percent="0.5"
            motion:layout_constraintEnd_toEndOf="parent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            motion:layout_constraintHeight_percent="0.3"
            motion:layout_constraintStart_toStartOf="parent"
            motion:layout_constraintTop_toTopOf="parent"
            motion:layout_constraintBottom_toBottomOf="parent"
            motion:layout_constraintHorizontal_bias="1"
            motion:layout_constraintVertical_bias="1.0" />
    </ConstraintSet>
 

Я хочу установить значение «layout_constraintHorizontal_bias» в Java на коммутаторе

Но я не нашел решения

что мне делать?

Ответ №1:

Набор ограничений должен содержать все необходимые вам методы

 MotionLayout ml = ...
ConstraintSet set = ml.getConstraintSet(R.id.end)
set.setHorizontalBias(R.id.widgetid, 0.4)
ml.updateState(R.id.end, set);
ml.rebuildScene();
 

Если вы уже находитесь в этом состоянии, возможно, вам захочется позвонить

 ml.updateStateAnimate(R.id.end,set,duration_in_ms);