2016-12-22 12 views
3

私はツールバーを折りたたむの助けを借りて拡張ツールと崩壊ツールバーを実装していますが、ツールバーが折りたたまれているときに別のツールバーを表示したいと考えています。コードの一部を見たことがありますが、私の解決策を見つけることができません。私はこれは私がAndroidで拡張と崩壊のツールバー

activity_collapsing_toolbar.xmlを実装しているコードの私の作品です

enter image description here

適切にも素晴らしい開発者 https://github.com/saulmm/CoordinatorLayoutExampleの1の溶液を見てきましたが、私の解決策を見つけることができないことができ

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

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="176dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 


      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:background="@color/base_color_theme_new" 
       android:gravity="center_horizontal" 
       app:layout_collapseMode="parallax"> 

       <RelativeLayout 
        android:id="@+id/rl_class_image" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="26dp" 
        android:gravity="center"> 

        <LinearLayout 
         android:id="@+id/ll_class" 
         android:layout_width="60dp" 
         android:layout_height="60dp" 
         android:background="@drawable/rounded_white_circle" 
         android:gravity="center"> 

         <ImageView 
          android:id="@+id/iv_class_image" 
          android:layout_width="60dp" 
          android:layout_height="60dp" 
          android:layout_gravity="center" 
          android:padding="8dp" 
          android:src="@drawable/class_4" /> 
        </LinearLayout> 
       </RelativeLayout> 


       <TextView 
        android:id="@+id/tv_class_name" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/rl_class_image" 
        android:layout_marginTop="15dp" 
        android:gravity="center" 
        android:text="MATHEMATICS" 
        android:textSize="17sp" /> 

       <TextView 
        android:id="@+id/tv_videos_test" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/tv_class_name" 
        android:layout_marginTop="10dp" 
        android:gravity="center" 
        android:text="20 VIDEOS | 5 TESTS" 
        android:textSize="10sp" /> 


      </RelativeLayout> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" /> 

     </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" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:background="@drawable/rounded_corners_for_list" 
     android:fillViewport="true" 

     app:behavior_overlapTop="10dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 


     <!--<include layout="@layout/activity_chapters" />--> 
     <com.chalklit.widget.NonScrollListView 
      android:id="@+id/lv_modules_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/white" 
      android:divider="@null" 
      android:scrollbars="none"></com.chalklit.widget.NonScrollListView> 


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

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

CollapsingToolbarActivity.java

private CollapsingToolbarLayout collapsingToolbarLayout = null; 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 


    setContentView(R.layout.activity_collapsing_toolbar); 

    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.inflateMenu(R.menu.menu_main); 

    setSupportActionBar(toolbar); 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 

    collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); 
    collapsingToolbarLayout.setTitle(" "); 
    collapsingToolbarLayout.setContentScrimColor(getResources().getColor(R.color.base_color_theme_new)); 
    collapsingToolbarLayout.setStatusBarScrimColor(getResources().getColor(R.color.base_color_theme_new)); 
} 
+0

でプロジェクト全体を見ることができます;'。私はあなたが '.setTitle(" Mathematics ")'を望んだと仮定します?それ以外の場合、はい、あなたのツールバーは空白です - それはあなたの問題ですか? –

+0

#cricket_007ツールバーが展開されているときにタイトル(「数学」)を設定できませんツールバーが折りたたまれているときにその数学テキストビューを移動したい –

+0

問題が何か混乱しています...このメソッドはタイトルを処理します。 https://github.com/saulmm/CoordinatorBehaviorExample/blob/master/app/src/main/java/saulmm/myapplication/MainActivity.java#L67 –

答えて

1

これを達成するために、我々はアカウント2つのコア要素に乗りCoordinatorLayout.Behavior

使用してカスタム動作を作成しておく必要があります。子供との依存関係:

子は誰でしょう行動、依存関係を強化する図です。子要素と対話するトリガーとして機能します。あなたの要件では、子はImageViewであり、依存関係はツールバーです。そのようにして、ツールバーが動くと、ImageViewも動きます。

、カスタマー行動ツールバーのデモのためのいくつかは以下のリンク

3

を確認してくださいここでは、カスタムCoordinatorLayoutBehaviorを使用していない別のアプローチです。

AppBarLayoutから得られるOnOffsetChangedListenerを使用します。ここで

は抜粋です:

class OnOffsetChangedListener implements AppBarLayout.OnOffsetChangedListener { 

     @Override 
     public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 

      final int scrollRange = appBarLayout.getTotalScrollRange(); 
      float offsetFactor = (float) (-verticalOffset)/(float) scrollRange; 
      ... 

これは総スクロール範囲を検索し、総スクロール範囲と現在のスクロール位置の間の比率を見つける方法を示します。これは、ツールバービューの拡大縮小と配置方法を理解するために必要なものです。カスタムレイアウトのために

(私が行ったように)、あなたはonAttachedToWindowをオーバーライドして、そこにリスナーを追加することができます。

 // Add an OnOffsetChangedListener if possible 
     final ViewParent parent = getParent(); 
     if (parent instanceof AppBarLayout) { 
      if (mOnOffsetChangedListener == null) { 
       mOnOffsetChangedListener = new OnOffsetChangedListener(); 
      } 
      ((AppBarLayout) parent).addOnOffsetChangedListener(mOnOffsetChangedListener); 
     } 

私は、このアプローチは、カスタム動作を作成するよりも少し単純であることが判明。

私はGitHubでサンプルプロジェクトを作成しました。アプリは次のようになります。

App screenshots

あなたは `.setTitle(」「)を持っているhttps://github.com/klarson2/Collapsing-Image

関連する問題