Intereting Posts
Получить список активных PendingIntents в AlarmManager Мне нужно вызвать HttpURLConnection.disconnect после окончания использования Android SDK версия в Eclipse? Не удалось разрешить целевой Android-x Сбой официальных примеров Facebook (GraphApiSample) Adb remount разрешено, но доступно для доступа к суперпользователю в shell-android Как называется маленький виджет с тремя точками внутри карты в андроиде? Ориентировочная точка установки Android для анимации масштаба Как использовать API входа в Google с помощью Cordova / Phonegap Почему AccountManager.addAccountExplicitly возвращает false? Примеры кода для программирования Bluetooth на Android Android «Только оригинальный поток, создавший иерархию представлений, может коснуться его представлений». Как реализовать кнопку на Android-виджете Как удалить из базы данных реального времени firebase? Как зашифровать файл с SD-карты с помощью AES на Android? Как я могу получить серийный номер SD-карты в Android 7.0+?

25.1.0 Android-поддержка lib нарушает потрясающее поведение

Я обновляюсь до последней версии библиотеки поддержки, и поведение прокрутки FAB не работает. При прокрутке на RecyclerView он правильно прокручивается вниз, но при прокрутке снова это не так. Он остается скрытым. Снижение до 25.0.1, похоже, смягчает эту проблему. Для справки здесь используется код, который я использую для этого.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true" android:fitsSystemWindows="true" tools:context=".mainhost.MainActivity" tools:openDrawer="start"> <android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main_coordinator_layout_root_view" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainhost.MainActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways|snap"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:focusableInTouchMode="true" app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <!-- Layout for content is here. This can be a RelativeLayout --> <FrameLayout android:id="@+id/content_main" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="-3dp" android:layout_marginRight="-3dp" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.globyworks.citykey.mainhost.MainActivity" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" app:layout_behavior="com.globyworks.citykey.helpers.ScrollingFABBehavior" android:src="@drawable/drawer_new_report_white" /> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:background="@android:color/white" app:menu="@menu/menu_drawer"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

И класс прокрутки:

  public class ScrollingFABBehavior extends FloatingActionButton.Behavior { public ScrollingFABBehavior(Context context, AttributeSet attrs) { super(); } public boolean onStartNestedScroll(CoordinatorLayout parent, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) { return true; } @Override public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { if (dependency instanceof RecyclerView) { return true; } return false; } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed ); if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { child.hide(); } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { child.show(); } } } 

Solutions Collecting From Web of "25.1.0 Android-поддержка lib нарушает потрясающее поведение"

В настоящее время CoordinatorLayout пропускает представления, установленные в GONE при поиске поведения для вызова в методе onNestedScroll .

Быстрое обходное решение здесь устанавливает видимость FAB к INVISIBLE в конце анимации скрыть FAB .

 if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { child.hide(new FloatingActionButton.OnVisibilityChangedListener() { @Override public void onHidden(FloatingActionButton fab) { super.onHidden(fab); fab.setVisibility(View.INVISIBLE); } }); } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { child.show(); } 

Вышеупомянутый пользовательский OnVisibilityChangedListener был только частью решения для меня. С настройкой обновления fab на INVISIBLE также необходимо обновить условие else в onNestedScroll (), чтобы теперь проверить, что видимость INVISIBLE вместо GONE:

 @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); if(dyConsumed > 0 && child.getVisibility() == View.VISIBLE){ child.hide(new FloatingActionButton.OnVisibilityChangedListener() { @Override public void onHidden(FloatingActionButton fab) { super.onHidden(fab); fab.setVisibility(View.INVISIBLE); } }); } else if(dyConsumed < 0 && child.getVisibility() == View.INVISIBLE){ child.show(); } } 

У меня есть одна и та же проблема с tabview (после обновления до 25.1.0). Он показывает первый раз, но второй раз (после повторного заполнения) он становится невидимым.