5

Вот код.Панель инструментов, не отображающая изнутри сворачивающуюся панель инструментов

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

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="100dp"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|enterAlways|exitUntilCollapsed"> 

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

      <android.support.design.widget.TabLayout 
       android:id="@+id/main_tablayout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom" 
       app:layout_collapseMode="none"/> 


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

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

    <!--<android.support.v4.widget.NestedScrollView--> 
     <!--android:id="@+id/nestedscroll"--> 
     <!--android:layout_width="match_parent"--> 
     <!--android:layout_height="match_parent"--> 
     <!--android:fillViewport="true"--> 
     <!--android:scrollbars="horizontal"--> 
     <!--app:layout_behavior="@string/appbar_scrolling_view_behavior">--> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/main_viewpager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/main_fab" 
     android:layout_margin="16dp" 
     android:src="@android:drawable/ic_media_play" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_anchor="@id/main_viewpager" 
     app:layout_anchorGravity="bottom|end"/> 

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

Проблема:
1) Панель инструментов не видна.
2) Свертывание панели инструментов вообще не разрушается. [Решено]
3) Viewpager и FAB также не видны, если положить внутри nestedScrollView. [Решено]

Дополнительные детали:
Макет для фрагментов ViewPager имеют LinearLayout как корень, так и внутри, которые имеют recyclerview.

Все, кажется, в порядке. Невозможно понять, чего не хватает. Хорошее объяснение того, как работают координаторы и сворачивающиеся панели инструментов, также действительно поможет.

ответ

4

1) Панель инструментов не отображается.

Прежде всего, вам нужно определить, что панель инструментов вы хотите использовать в своем классе деятельности:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

Изменение существующего кода XML:

 <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      app:title="@string/app_name" 
      app:layout_collapseMode="parallax"> 
     </android.support.v7.widget.Toolbar> 

к:

 <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" //set initial height 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" //this might be also useful 
      app:title="@string/app_name" 
      app:layout_collapseMode="parallax" /> 

2) Свертывание панель инструментов вообще не рушится.

Была ли ваша деятельность использованием правильной темы. Установите на ваш AppBarLayout:

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 

как в этом примере: include_list_viewpager.xml

3) ViewPager и FAB также не видно, если положить внутрь nestedScrollView.

Нет причин для этого. Добавление этих строк:

android:layout_marginTop="?attr/actionBarSize" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 

в ViewPager должно быть достаточно.

Оба должны быть прямыми детьми CoordinatorLayout.

Следуйте этот пример: http://blog.nkdroidsolutions.com/collapsing-toolbar-with-tabs-android-example/

Если вы новичок в Material Design или чувствовать себя немного потеряли с некоторым его поведением, я настоятельно рекомендую проверить проект Chris Банес Материал Design cheesequare: https://github.com/chrisbanes/cheesesquare/

Надеется, что это поможет

+0

уже определил 2-й и 3-й. Его первый, который не работает даже после этого 'Toolbar toolbar = (Панель инструментов) findViewById (R.id.toolbar); setSupportActionBar (панель инструментов); ' –

+0

@DarshanMiskin Я обновил свой ответ. Вы забыли установить высоту панели инструментов по умолчанию - 'wrap_content' может быть в этом случае равным нулю. Атрибут 'actionBarSize' устанавливает стандартный размер панели инструментов Android. – piotrek1543

+0

попробовал .. все еще ничего .. –

2

Прежде всего вы должны рассказать свою деятельность, что панель инструментов, которую вы используете, так и в методе OnCreate вы должны иметь:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

ваша вторая и третья проблема должна решить вместе. Вы должны использовать NestedScrollView в качестве основного макета для фрагментов внутри ViewPager, а затем внутри этого, поставить LinearLayout или что-нибудь еще.

+0

В NestedScrollView не обязательно свойство 'layout_behavior' важно. проверьте это http://stackoverflow.com/questions/31275277/viewpager-not-appearing-when-using-collapsingtoolbarlayout. Кроме того, после смены темы сворачиваемая панель инструментов не рушится. Будет проверять ваш код сейчас. –

+0

все еще не работает. –

+0

после смены темы, сворачиваемая панель инструментов ** NOW ** рушится. –