CollapsingToolbarLayout внутренний видоискатель

Я использую aViewPager, который загружает разные страницы. Они должны быть сделаны из CollapsingToolbarLayout.

<FrameLayout 
    android_layout_width="match_parent"
    android_layout_height="match_parent">


    <android.support.v4.view.ViewPager
        
        android_id="@+id/pager"
        android_layout_width="match_parent"
        android_layout_height="match_parent" />

</FrameLayout>

Как только надутый, план будет работать как это:

Он должен позволять пролистывать страницы, и каждая страница имеет изображение на панели инструментов, которое может сворачиваться по отдельности. Возможно ли это?

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    
    
    
    android_id="@+id/root_container"
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android_fitsSystemWindows="true"
    android_background="@color/background"
    android_transitionName="@string/transition_session_background">

    <android.support.design.widget.AppBarLayout
        android_id="@+id/appbar"
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        android_background="@null"
        android_fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android_id="@+id/collapsing_toolbar"
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            app_layout_scrollFlags="scroll"
            android_minHeight="1px"
            android_fitsSystemWindows="true"
            android_background="@null"
            app_titleEnabled="false">



                <ImageView
                    android_id="@+id/photo"
                    android_layout_width="match_parent"
                    android_layout_height="match_parent"
                    android_scaleType="centerCrop"
                    android_transitionName="@string/transition_session_image" />



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



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

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

    <android.support.v4.widget.NestedScrollView
        android_id="@+id/scroll_view"
        android_layout_width="match_parent"
        android_layout_height="wrap_content"
        app_layout_behavior="@string/appbar_scrolling_view_behavior"
        android_clipToPadding="false">


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


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

2 ответа

  1. Это позволит пролистывать страницы и каждая страница имеет изображение в
    своя панель инструментов которая может collaps индивидуально. Возможно ли это?

    Нет, к сожалению панель инструментов, имеющая свое собственное состояние для каждой страницы viewpager не возможно. Причина проста для понимания, так как viewpager является представлением равной иерархии, поскольку viewpager viewpager и панель инструментов работают независимо.

    Хотя у вас может быть приложение, где каждый раз, когда страница изменяется в viewpager, панель инструментов остается свернутой или развернутой.
    Для достижения этой настройки viewpager на странице изменить прослушиватель

    // Attach the page change listener inside the activity
    vpPager.addOnPageChangeListener(new OnPageChangeListener() {
    
        // This method will be invoked when a new page becomes selected.
        @Override
        public void onPageSelected(int position) {
            appBarLayout.setExpanded(true);//or false as you wish
        }
    
    
    }); 
    

    С помощью библиотеки поддержки v23 можно вызвать appBarLayout.setExpanded (true/false) в onPageSelected () переопределенный метод.

  2. вы можете использовать Collapsing toolbarС viewpagerи Tablayout:

        <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        
        
        android_layout_width="match_parent"
        android_layout_height="match_parent"
        android_fitsSystemWindows="true">
    
        <android.support.design.widget.AppBarLayout
            android_layout_width="match_parent"
            android_layout_height="wrap_content"
            android_fitsSystemWindows="true"
            android_theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    
            <android.support.design.widget.CollapsingToolbarLayout
                android_id="@+id/collapse_toolbar"
                android_layout_width="match_parent"
                app_titleEnabled="false"
                android_layout_height="250dp"
                android_fitsSystemWindows="true"
                app_contentScrim="?attr/colorPrimary"
                app_layout_scrollFlags="scroll|exitUntilCollapsed">
    
                //your image view under toolbar
                <ImageView
                    android_id="@+id/header"
                    android_layout_width="match_parent"
                    android_layout_height="match_parent"
                    android_src="@drawable/test"
                    android_fitsSystemWindows="true"
                    android_scaleType="centerCrop"
                    app_layout_collapseMode="parallax" />
    
                <android.support.v7.widget.Toolbar
                    android_id="@+id/toolbar"
                    android_layout_width="match_parent"
                    android_layout_height="100dp"
                    android_gravity="top"
                    android_minHeight="?attr/actionBarSize"
                    app_layout_collapseMode="pin"
                    app_popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    app_titleMarginTop="15dp" />
    
                <android.support.design.widget.TabLayout
                    android_id="@+id/tabs"
                    android_layout_width="match_parent"
                    android_layout_height="?attr/actionBarSize"
                    android_layout_gravity="bottom"
                    app_tabIndicatorColor="@color/colorAccent" />
    
            </android.support.design.widget.CollapsingToolbarLayout>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.view.ViewPager
            android_id="@+id/pager"
            android_layout_width="match_parent"
            android_layout_height="match_parent"
            app_layout_behavior="@string/appbar_scrolling_view_behavior" />
    
    
    </android.support.design.widget.CoordinatorLayout>
    

    вот хороший пример реализации:
    http://manishkpr.webheavens.com/android-material-design-tabs-collapsible-example/