4

Я пытаюсь прокручивать свой ToolBar с экрана, когда я просматриваю свой ViewPager (ViewPager внутри фрагмента, который помещается в FrameLayout), и покажите ToolBar, когда я прокручиваю вниз. Я пытаюсь достичь этого, используя библиотеку дизайна поддержки.КоординаторLayout, AppBarLayout и ToolBar - Панель инструментов не прокручивается с экрана

Вот мой 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.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      android:background="?attr/colorPrimaryDark" 
      android:elevation="4dp" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > 

      <TextView 
       android:id="@+id/toolbar_title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="" 
       android:textColor="@android:color/white" 
       android:textSize="20sp" /> 

      <ProgressBar 
       android:id="@+id/progressBar" 
       android:layout_width="32dp" 
       android:layout_height="32dp" 
       android:layout_gravity="right" 
       android:indeterminate="true" 
       android:visibility="gone" /> 
     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/detail_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.xx.xxx.DetailActivity" 
     tools:ignore="MergeRootFrame" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" > 
    </FrameLayout> 

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

Но панель не реагирует на прокрутку. Что я делаю не так?

ответ

4

Вы должны иметь что-то вроде этого:

<?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" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

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

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="@color/primary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/backdrop" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       android:src="@drawable/header" 
       app:layout_collapseMode="parallax" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/app_bar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

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

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

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

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

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:clickable="true" 
     android:onClick="registrarNuevoUsuario" 
     android:src="@drawable/ic_action_check" 
     app:layout_anchor="@id/appbar" 
     app:layout_anchorGravity="bottom|right|end" /> 

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

dimens.xml

<resources> 
    <dimen name="fab_margin">16dp</dimen> 
    <dimen name="detail_backdrop_height">256dp</dimen> 
</resources> 
+1

Я думаю, что этот подход заключается в том, что у вас есть расширенный ToolBar, но все, что мне нужно, это прокрутить обычную панель инструментов с экрана. –

+0

@ Vamsi Chalia Затем удалите часть XML, которая вам не нужна. AKA ImageView –

4

Если вы просто хотите, чтобы панель инструментов для входа/выхода AppBarLayout достаточно. Вам не нужен CollapsingToolbarLayout. Попробуйте изменить FrameLayout на android.support.v4.widget.NestedScrollView

+0

У меня есть фрагмент, который я добавляю в FrameLayout. Итак, я не могу этого вынести. и есть ли проблема с моим нынешним подходом? –

+0

Почему вы не используете тег '' then? можете ли вы опубликовать код того, что вы добавляете? Проблема в том, что CoordinatorLayout может сотрудничать только с 'NestedScrollView' или' RecyclerView' – TheoK

+1

TheonK, я думаю, что ваш ответ должен быть комментарием к ответу Хоакина. –

0

Что у вас есть в вашем ViewPager? ListView или RecyclerView? В любом случае вы можете захотеть добавить поведение к этому элементу прокрутки.

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

и самое главное, и как заявил this other SO answer, не забудьте обновить утилиты сборки 22 и ваши ссылки Gradle, по крайней мере, об 22.20 обоих компонентов и библиотеки поддержки проектирования:

compile 'com.android.support:design:22.2.0' 
compile 'com.android.support:recyclerview-v7:22.2.0' 

Отъезд this для получения полного урока.

3

Аналогичный вопрос был зарегистрирован Google https://code.google.com/p/android/issues/detail?id=201822

Но после выпуска Android библиотеки поддержки, пересмотр 23.2.1 (март 2016 г.) Эта ошибка будет решена.

Исправлено: AppBarLayout не прокрутке полностью при использовании fitsSystemWindow

Библиотека обновления Поддержка Android Support Library to 23.2.1 или в дальнейшем.

+1

Спасибо! Я использовал 23.2.0 версию библиотеки поддержки и исправил эту проблему. Сэкономил мои часы! – LETs

+0

рад это слышать. –

Смежные вопросы