CoordinatorLayout не скрывает панель инструментов при прокрутке, несмотря на реализацию всех необходимых параметров
Вот моя установка, я запускаю DrawerLayout, внутри него находится CoordinatorLayout, содержащий AppBarLayout и nestedscrollview. Я пытаюсь нормально прокрутить nestedscrollview и скрыть панель инструментов при прокрутке вниз и повторить при прокрутке вверх. В приложении мой код XML. Был бы признателен за любую помощь.. прочитал все связанные вопросы и реализовал свои ответы без какого-либо успеха.
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout_admin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/admincoordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/adminrelScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/menu_drawer" />
3 ответа
У меня была такая же проблема в течение недели, и я пытался решить практически все. Однако мне удалось решить проблему.
Где у вас что-то вроде...
<include
android:id="@+id/app_bar"
layout="@layout/app_bar"
app:layout_scrollFlags="scroll|enterAlways" />
... замените это тем, что есть в вашем app_bar.xml
раскладка. Например:
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
style="@style/AppTheme.Toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways"/>
Кажется, по какой-то причине, прокручивая с CoordinatorLayout
не работает при использовании <include>
тег.
Как сказал @Farbod Salamat-Zadeh ранее: CoordinatorLayout
не работает при использовании <include>
тег.
Но вы можете использовать <include>
сюда:
<include
android:id="@+id/app_bar"
layout="@layout/app_bar" />
параметр app:layout_scrollFlags="scroll|enterAlways"
просто должен быть перенесен в ваш app_bar.xml
если это приемлемо для вас
Я думаю, что использование нового CollapsingToolbarLayout поможет… Краткое описание из очень полезного исследования новой библиотеки поддержки дизайна Android показывает, как обернуть панель инструментов в CollapsingToolbarLayout и настроить эффекты, установив layout_collapseMode.
Обновить
Я думаю, что добавление onScrollListener в ваш ListView и показ / скрытие панели инструментов, как этот пример из этого ответа:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
listView.setOnScrollListener(new OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) { }
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (view.getId() == listView.getId()) {
final int currentFirstVisibleItem = listView.getFirstVisiblePosition();
if (currentFirstVisibleItem > mLastFirstVisibleItem) {
getSupportActionBar().hide();
} else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
getSupportActionBar().show();
}
mLastFirstVisibleItem = currentFirstVisibleItem;
}
}
});