MotionLayout применить loadLayoutDescription - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть 2 различных поведения для MotionLayout.Идея состоит в том, чтобы изменить их в зависимости от состояния приложения.Но когда я настраиваюсь из кода:

if(smth) {
   constraintToolbar.loadLayoutDescription(R.xml.layout_description_1)
} else {
   constraintToolbar.loadLayoutDescription(R.xml.layout_description_2)
}

Ограничения не применяются.Но они применяются после перетаскивания.Есть ли обходной путь или это из-за альфа-версии ConstraintLayout 2.0.0?Я использую:

'com.android.support.constraint:constraint-layout:2.0.0-alpha2'

Ответы [ 4 ]

0 голосов
/ 16 июня 2019

вы должны установить транзакции после загрузки макетов.

        if(smth) {
            constraintToolbar.loadLayoutDescription(R.xml.layout_description_1)
            motionContainer.setTransition(R.id.start1 ,R.id.end1)

        } else {
            constraintToolbar.loadLayoutDescription(R.xml.layout_description_2)
            motionContainer.setTransition(R.id.start1, R.id.end1)
        }
0 голосов
/ 01 февраля 2019

Обходной путь, но работает

if(smth) {
   constraintToolbar.loadLayoutDescription(R.xml.layout_description_1)
   constraintToolbar.setTransition(R.id.start1, R.id.end1)
} else {
   constraintToolbar.loadLayoutDescription(R.xml.layout_description_2)
   constraintToolbar.setTransition(R.id.start2, R.id.end2)
}
0 голосов
/ 04 марта 2019

loadLayoutDescription Я думаю, что просто используйте в androidx

implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'

или, если вы не используете androidx, вы должны изменить constraintToolbar на motion

val motion = MotionLayout(this)

motion.loadLayoutDescription
0 голосов
/ 21 ноября 2018

У меня есть переход в MotionScene.

<Transition
    motion:constraintSetStart="@id/start"
    motion:constraintSetEnd="@id/end"
    motion:duration="1000"
    motion:interpolator="linear">

Начальное ограничение не устанавливается после "MotionLayout.loadLayoutDescription".Я добавил:

MotionLayout.setTransition(R.id.start, R.id.end)

и ограничения применены правильно.

...