Ограничение настройки макета времени выполнения constraintStart_toEndOf - PullRequest
1 голос
/ 26 мая 2020

У меня ограничение app:layout_constraintStart_toStartOf="parent". Время выполнения Мне нужно изменить это ограничение на app:layout_constraintStart_toEndOf="@+id\myid".

Из моего исследования я нашел только constraintSet.connect(viewid, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END, 50);. Но как с этим добиться моих требований. Есть идеи по этому поводу?

1 Ответ

1 голос
/ 26 мая 2020

Это kotlin, но почти не отличается от Java.

  1. Укажите идентификатор rootLayout.
  2. Теперь используйте этот код:

    val constraintSet = ConstraintSet()
    constraintSet.clone(rootLayout) //Your rootLayout
    constraintSet.connect(
       yourView.id,                //ID of the view whose position you want to change
       ConstraintSet.START,      
       yourMyIdView.id,            //ID of the correspondent view
       ConstraintSet.END
    )
    constraintSet.applyTo(rootLayout) //Your rootLayout
    

Совет: вы также можете анимировать изменение, установив animateChange на true в rootLayout (XML) или вы можете использовать анимацию Transition, которую я всегда предпочитаю.

val transition: Transition = ChangeBounds()
transition.interpolator = AccelerateInterpolator() //Or Any other Interpolator
transition.duration = 700 //Duration
TransitionManager.beginDelayedTransition(rootLayout, transition) //Your rootLayout
constraintSet.applyTo(rootLayout) //Remember to put above 4 lines before this

Вы можете дополнительно добавить Alpha анимацию, используя yourView.animate().alpha(1f).duration = 700 //1f (0 to 1) is the value and 700 is the duration.

Помните, это почти не отличается от Java, вам просто нужно добавить ; в конце, возможно.

...