ConstraintLayout AHBottomNavigation проблема анимации - PullRequest
0 голосов
/ 16 января 2019

У меня есть ConstraintLayout с навигацией внизу. В некоторых случаях мне нужно скрыть нижнюю навигацию с анимацией ConstraintLayout.

XML-файл макета:

<android.support.constraint.ConstraintLayout
        android:id="@+id/lMainConstraint"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
. . .
toolbar and others views
. . .

<com.aurelhubert.ahbottomnavigation.AHBottomNavigation
                android:id="@+id/vNavigation"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>

Чтобы скрыть навигацию, сдвинув ее вниз:

  val newSet = ConstraintSet()
            newSet.clone(mInitialSet)
newSet.connect(R.id.toolbar, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.TOP)
        newSet.connect(R.id.vNavigation, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM)

            val transition = AutoTransition()
            transition.interpolator = AccelerateInterpolator()
            transition.duration = 250
            TransitionManager.beginDelayedTransition(lMainConstraint, transition)
            newSet.applyTo(lMainConstraint)

Однако vNavigation скрывается только наполовину. Мой R.id.toolbar наверху прячется полностью, любой другой ViewGroup прячется без проблем.

Ввод AHBottomNavigation в LinearLayout или любой другой смысл не имеет смысла.

Использование библиотеки - com.aurelhubert: ahbottomnavigation: 2.2.0

1 Ответ

0 голосов
/ 16 января 2019

Полагаю, это потому, что основание AHBottomNavigation уже ограничено основанием родительского элемента app:layout_constraintBottom_toBottomOf="parent". Поэтому, когда вы добавляете в новое ограничение, соединяя верхнюю часть AHBottomNavigation с нижней частью родительского элемента, он центрируется между этими двумя ограничениями. Добавьте set.clear(R.id.vNavigation, ConstraintSet.BOTTOM); к своему коду и посмотрите, работает ли он.

...