2016-07-01 7 views
1

私はCollapsingToolbarLayoutと私のフラグメント(タブ)のビューページを使用しています。Collaps CollapsingToolbarタブ間のスワイプでのレイアウト

<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:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <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="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      > 

      <fragment       
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/map" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       class="com.google.android.gms.maps.SupportMapFragment"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:popupTheme="@style/AppTheme.PopupOverlay"> 

      </android.support.v7.widget.Toolbar> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom" 
       app:tabGravity="YOUR TAB GRAVITY" 
       app:tabIndicatorColor="YOUR TAB INDICATOR COLOR" 
       app:tabMode="YOUR TAB MODE"> 

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

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

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

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

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

しかし、今ではスクロールのツールバーを折りたたみたいのではなく、タブを切り替えるときに使います。

私はタブだけを持っていて、タブ1にはツールバーが開いていて、タブ2にはツールバーが閉じている必要があります。また、2つのタブをスワイプしている間は、ツールバーがスムーズに崩れてしまいます。スクロールによる折りたたみを無効にする必要があります。

これは可能ですか?

+0

切り替えタブでツールバーを折りたたむことはできますが、スクロールでは折り畳みを無効にすることはできません。 – Drv

+1

@Drvもしあなたが私の回答を更新したことを確認したいのなら、 'CollapsingToolbarLayout'を無効にする方法があります –

答えて

2

appbarlayout.setExpanded()がお手伝いします。

tablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewpager.setCurrentItem(tab.getPosition()); 
      appbar.setExpanded(false,true); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

そしてViewPager用:

wppager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      appbar.setExpanded(false,true); 

     } 

     @Override 
     public void onPageSelected(int position) { 
      appbar.setExpanded(false,true); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

あなたCollapsingToolbarLayoutを無効にする必要があります。

CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)mAppBarLayout.getLayoutParams(); 
lp.height = (int) getResources().getDimension(R.dimen.toolbar_height); 

dimens.xmlにこれを追加します。<dimen name="toolbar_height">48dp</dimen>

CollapsingToolbarLayoutのロックを解除する場合:

CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams(); 
lp.height = (int) getResources().getDimension(R.dimen.collapsing_height); 
appbarlayout.setExpanded(true,true); 

dimens.xmlにこれを追加:<dimen name="collapsing_height">150dp</dimen>

CollapsingToolbarLayout高さが等しい場合Toolbar高さの滞在は常に崩壊モードをトリックはここにあります。

+0

そして、スクロールで折り畳みを無効にする方法はありますか? – Zoker

+1

@Zokerはい、道があります。私の答えを更新させてください –

+0

そして、崩壊は滑らかですか?それともすぐに拡張されますか? – Zoker

関連する問題