Сворачивающаяся панель инструментов Android не использует инерцию, как это делает приложение Google Play

Я использую библиотеку поддержки дизайна Android для создания действия со складной панелью инструментов с приятным эффектом затухания, как в Google Play или контактном профиле Whatsapp. Я помещу макет активности в конец, но имейте в виду, что это всего лишь макет сворачиваемой активности по умолчанию, к которому я добавил ImageView в AppBarLayout, чтобы создать панель инструментов ‹-> эффект затухания изображения.

Моя проблема с этой реализацией представляет собой 2 симптома, которые я опишу:

  • Содержимое активности длинное, когда я хочу быстро прокрутить вверх быстрым движением, прокрутка остановится перед расширением панели инструментов. Я хочу, чтобы это продолжалось, когда я нахожусь в нижней части своего NestedScrollView, и я быстро прокручиваю пальцем, чтобы перейти к началу своей деятельности. Я хочу, чтобы эта прокрутка шла и расширяла панель инструментов, это способ Приложение Google Play ведет себя или профиль WhatsApp.

  • Точно так же, когда панель инструментов развернута, прокрутка не имеет инерции, быстрое пролистывание вниз приведет к небольшой прокрутке, опять же, это не то, как ведет себя профиль Google Play или Whatsapp. После того, как панель инструментов свернута, прокрутка ведет себя так же, как всегда в ScrollViews, ListViews и т. д. Быстрое пролистывание позволит вам перейти вниз или вверх (если только контента не много).

Поддерживается ли поведение, которое я описываю, библиотекой поддержки проектирования?

активность.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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".ScrollingActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:fitsSystemWindows="true"
        android:layout_height="@dimen/app_bar_height_custom"
        android:layout_width="match_parent"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/toolbar_layout"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary">

            <ImageView
                android:src="@drawable/cuthbert"
                app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                android:minHeight="100dp"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="parallax"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/AppTheme.PopupOverlay" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_scrolling"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|end"
        android:src="@android:drawable/ic_dialog_email"/>

</android.support.design.widget.CoordinatorLayout>

content_scrolling.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_scrolling"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ScrollingActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/text_margin"
        android:text="@string/large_text"/>

</android.support.v4.widget.NestedScrollView>

person dbar    schedule 02.10.2015    source источник
comment
Итак, теперь, когда вы прокручиваете вниз, прокрутка останавливается (отстает) в тот момент, когда панель инструментов полностью скрыта, и вам нужно еще одно движение, чтобы продолжить прокрутку (то же самое происходит, когда вы прокручиваете вверх)?   -  person Ivan V    schedule 02.10.2015
comment
Когда я прокручиваю вверх, поведение такое, как вы описываете. Прокрутка вниз отличается, потому что прокрутка невозможна с расширенной панелью инструментов, в тот момент, когда вы перестаете касаться экрана, прокрутка прекращается. Создание нового действия прокрутки в Android Studio с использованием предоставленного шаблона даст вам именно то поведение, которое я описываю.   -  person dbar    schedule 02.10.2015
comment
Нашел обходной путь. Сообщается ли об этой проблеме??   -  person Raghunandan    schedule 28.01.2016
comment
Я не нашел решения. Не уверен, почему об этом следует сообщать, поскольку это кажется «правильным» поведением, просто не очень хорошим.   -  person dbar    schedule 01.02.2016
comment
Вы все еще нашли решение?   -  person Shikhar Mathur    schedule 21.05.2016


Ответы (2)


Попробуйте добавить эти строки в:

<android.support.design.widget.CollapsingToolbarLayout
   app:expandedTitleMarginEnd="64dp"
   app:expandedTitleMarginStart="48dp"
   app:expandedTitleTextAppearance="@android:color/transparent"
person Tiutiu    schedule 23.07.2017

Обновите библиотеки поддержки до версии 26.0.0 (особенно библиотеку поддержки дизайна). Они, наконец, исправили эту проблему после многих лет жалоб.

person Minas    schedule 26.07.2017