RequestLayout () неправильно вызван

Я получаю это предупреждение от спама в моей консоли. Единственная информация, которую я могу найти, это большинство людей получают ее, когда у них есть быстрый прокрутка, включенная в listview. Я не использую списки. Он говорит, что его неправильно называют CollapsingToolbarLayout, AppCompatTextView, панель инструментов, а иногда и AppBarLayout. Это происходит всякий раз, когда я быстро «бросаю» свой вложенный прокрутки вверх и вниз, чтобы свернуть и развернуть панель инструментов.

Журналы:

06-30 22:18:42.622 19090-19090/? I/art: Not late-enabling -Xcheck:jni (already on) 06-30 22:18:43.153 19090-19090/joebruckner.lastpick.debug D/MovieShuffleActivity: false, true, false 06-30 22:18:43.205 19090-19126/joebruckner.lastpick.debug D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true [ 06-30 22:18:43.267 19090:19126 D/ ] HostConnection::get() New Host Connection established 0xea95fdb0, tid 19126 06-30 22:18:43.287 19090-19126/joebruckner.lastpick.debug I/OpenGLRenderer: Initialized EGL, version 1.4 06-30 22:18:43.806 19090-19090/joebruckner.lastpick.debug D/MovieShuffleActivity: false, true, true 06-30 22:28:49.264 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass 06-30 22:28:49.264 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e VE..... ......ID 0,291-1080,438 #7f0d0069 app:id/toolbar} during layout: running second layout pass 06-30 22:28:49.277 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame 06-30 22:28:49.456 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass 06-30 22:28:49.456 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e VE..... ......ID 0,197-1080,344 #7f0d0069 app:id/toolbar} during layout: running second layout pass 06-30 22:28:49.475 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame 06-30 22:28:49.696 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass 06-30 22:28:49.696 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e VE..... ......ID 0,0-1080,147 #7f0d0069 app:id/toolbar} during layout: running second layout pass 06-30 22:28:49.741 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame 

Xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingToolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:contentScrim="?attr/colorPrimary" app:titleEnabled="false" android:fitsSystemWindows="true"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="200dp" android:contentDescription="@string/backdrop" android:scaleType="fitXY" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/appBar" app:layout_behavior="@string/scrolling_view" app:behavior_overlapTop="80dp" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:src="@drawable/ic_dice_three_48dp" app:layout_anchor="@+id/frame" app:layout_anchorGravity="bottom|end" /> </android.support.design.widget.CoordinatorLayout> 

Это может произойти, когда метод getView () вашего адаптера отображает ваш макет, а другой код пытается получить доступ к этому представлению, чтобы отобразить его, что привело к столкновению. Пожалуйста, проверьте.

Вы устанавливаете какой-либо AppBarLayout.OnOffsetChangedListener? Если это так, это может быть вызвано атрибуцией параметров макета или любым заданным значением этого типа в вашем слушателе.

Если это ваша ситуация, установите атрибуты макета в основной поток

 appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { //post message back on main thread if you need to modify any views } }); 

Это сообщение служит только предупреждением о том, что некоторое представление уже запросило макет, и когда другие представления (в вашем случае Toolbar и CollapsingToolbarLayout ) уже запрашивают макет во время фазы макета.

В некоторых случаях это приводит к недостаткам производительности. Вы должны определить:

  1. У вас есть пользовательская View / ViewGroup которая вызывает requestLayout() во время прокрутки? У вас есть другой код, который вызывает requestLayout() ? У вас есть код, который изменяет иерархию GONE иерархии макетов, например, сделать GONE ?

  2. Когда это происходит? Это только в начале, незадолго до того, как все взгляды выложены?

У вас есть подозрительные взгляды, которые вызвали requestLayout() ненадлежащим образом, вам нужно найти, кто, когда и почему ранее делает реструктуризацию вашего макета.

Настройка заголовка на CollapsingToolbarLayout вместо панели инструментов помогла мне решить эту проблему

 collapsingToolbarLayout.setTitle(title); 

вместо

 toolbar.setTitle(title);