NestedScrollView не может быть приведен к android.support.constraint.ConstraintLayout - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть ConstraintLayout внутри ScrollView. Я пытаюсь использовать анимацию ConstraintLayout. Он отлично работает вне ScrollView, но когда я хочу использовать его внутри ScrollView, AndroidStudio говорит:

android.support.v4.widget.NestedScrollView cannot be cast to android.support.constraint.ConstraintLayout

Я знаю, потому что мой корневой макет - ScrollView, но я не знаю, как это исправить.

Я пытался добавить еще один ConstraintLayout до ScrollView, на этот раз приложение работало без сбоев, но когда я нажимаю кнопку, ничего не происходит.

<android.support.v4.widget.NestedScrollView 
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<android.support.constraint.ConstraintLayout
    android:id="@+id/const1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/background_light"
    tools:context=".MainActivity">

Это то, что я сделал в MainActivity

ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(this, R.layout.activity_main_animation);
ChangeBounds transition = new ChangeBounds();
transition.setInterpolator(new AnticipateInterpolator(1.0f));
transition.setDuration(1200);
TransitionManager.beginDelayedTransition(cc1, transition);
constraintSet.applyTo(cc1);

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Изменить ниже код

ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(this, R.layout.activity_main_animation); //this line need to be changed to 
constraintSet.clone(this, const1);// Pass id of ConstraintLayout for cloning as root layout of your xml file is not a ConstraintLayout.
0 голосов
/ 09 апреля 2019

Вот кое-что, что вы можете попробовать, если не возражаете анимировать все изменения макета в своих представлениях. Это достаточно легко добавить и посмотреть, работает ли оно для вашего случая использования. Добавить:

    android:animateLayoutChanges="true"

в NestedScrollView и отключите все свои переходы. Каждый раз, когда вы изменяете границы представления или вносите что-то новое на экран или за экран, Android автоматически обрабатывает анимацию. Снова YMMV, так как вы не можете контролировать скорость и т. Д. Анимаций, но это стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...