Intereting Posts
Как искать видео с API данных youtube в Android NoClassDefFoundError с помощью Jackson 2.2.x на Android с Gradle C ++ 11 cmath не в пространстве имен std для android NDK w / gcc-4.8 или clang 3.4 Наблюдаемый против Flowable rxJava2 Как получить текущую информацию о подключении Wi-Fi в android В отчетах Play Store «Ваше устройство несовместимо с этой версией», но он устанавливает через adb как можно лучше на Nexus7 Добавить готовые APK в Android AOSP system.img Как повторять уведомление ежедневно в определенное время в android через фоновое обслуживание Android-эмулятор спама logcat с «Service com.android.exchange.ExchangeService просочился ServiceConnection …, который первоначально был связан здесь Специальная цифровая клавиатура Android Как добавить разрешение манифеста в приложение для Android? Кодирование аудио AAC с использованием AudioRecord и MediaCodec на Android Могу ли я использовать tcpdump для получения HTTP-запросов, заголовка ответа и тела ответа? WebRTC Native API для Android Форматировать кредитную карту в текстовом редакторе в android

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). Он показывает первый раз, но второй раз (после повторного заполнения) он становится невидимым.