Gridview не показывает/скрывает панель инструментов

Я использую библиотеку поддержки дизайна и использую GridView, но когда я прокручиваю вверх или вниз до сетки, Toolbar не скрывается и не отображается. Я использую тот же код на RecyclerView, и он отлично работает.

<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/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar1"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

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

    <GridView
        android:id="@+id/gridView1"
        android:numColumns="2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

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

Это мой файл *.xml в моей деятельности. Я просто setSupportActionBar(toolbar) и инициализирую адаптер GridView.


person Panayiotis Irakleous    schedule 03.06.2015    source источник


Ответы (2)


В настоящее время ListView и GridView имеют ожидаемое поведение с CoordinatorLayout только с API>21.

Чтобы получить это поведение, вы должны установить:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    gridView.setNestedScrollingEnabled(true);
}

Дополнительную информацию можно найти здесь.

person Gabriele Mariotti    schedule 01.07.2015

Предположим, что вы используете CoordinatorLayout в качестве родительского макета, вам нужно использовать RecyclerView или NestedScrollView, чтобы он работал правильно.

person TheoK    schedule 03.06.2015
comment
Попробуйте заключить GridView в NestedScrollView. Из того, что сообщают пользователи, только RecyclerView и NestedScrollView должным образом взаимодействуют с CoordinatorLayout. - person TheoK; 03.06.2015
comment
Единственное другое решение, о котором я могу думать, это (если возможно) преобразовать ваш GridView в RecyclerView, реализующий GridLayoutManager - person TheoK; 03.06.2015