0

ViewPagerを使用しているときに、各フラグメントにカスタムツールバーを設定するにはどうすればよいですか?私は別の断片を表示するときに異なるアイコンを持っていたい。私はMenuを使いたくありません。ViewPagerのページスクロールのスクロール/編集ツールバー

私は例のアプリとしてcheesesquareを使用していますが、activity_main.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" 
    android:id="@+id/main_content" 
    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="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_scrollFlags="scroll|enterAlways|snap" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </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.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end|bottom" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@drawable/ic_check_black_24dp" 
     android:tint="@color/white"/> 

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

MainActivity.Java内の関連するビットがViewPagerが異なるフラグメントで設定された場合、この、次のとおりです。

private void setupViewPager(ViewPager viewPager) { 
     Adapter adapter = new Adapter(getSupportFragmentManager()); 
     adapter.addFragment(new CheeseListFragment(), "Cheese"); 
     adapter.addFragment(new AnotherFragment(), "Another"); 
     adapter.addFragment(new SomeOtherFragment(), "Some Other"); 
     viewPager.setAdapter(adapter); 
    } 

多分、私は何らかの形で、各フラグメントのImageButtonsを持っているユニークなツールバーレイアウトを指定し、フラグメントjavaファイルのどこかにそれぞれを設定することができますか?

編集:私は何をしたか私の他のアプリで 1つのツールバーを使用しますが、その後示されたものの断片をもとに、アイコンを表示していました/ショーImageButtonsを非表示にしました。

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appBarLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

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

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="right" 
      android:orientation="horizontal"> 

      <TextView 
       android:id="@+id/toolbarTitleTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Title" 
       android:layout_gravity="center" 
       android:singleLine="true" 
       android:ellipsize="end" 
       android:textSize="20sp" 
       android:textColor="#fff" 
       android:fontFamily="sans-serif-medium" 
       /> 

      <View 
       android:id="@+id/clearView" 
       android:layout_width="0dp" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 

      <ImageButton 
       android:id="@+id/editButton" 
       android:layout_width="48dp" 
       android:layout_height="48dp" 
       android:layout_gravity="center_vertical" 
       android:layout_marginRight="16dp" 
       android:scaleType="fitCenter" 
       android:padding="8dp" 
       android:background= 
        "?attr/selectableItemBackgroundBorderless" 
       android:contentDescription="Post" 
       android:src="@drawable/ic_mode_edit_24dp" 
       android:tint="@color/white" 
       /> 

     </LinearLayout> 

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

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

? –

+0

@VeereshCharantimathいいえ、その真上にあるツールバーです。通常、設定用の3つのドットなどのメニューアイコンが表示されます。 – Micro

+0

スワイプするたびにツールバーを変更したいのですか? –

答えて

0

サンプルコードは以下の通りです

viewPager

でpageChangeListenerを使用してください:あなたはswpieときに変更にtablayoutのアイコンをしたいですか

 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 
      if (position == 1) { 
       Log.d("Page 1", "Pressed"); 
       //set Image Button Visibility Gone or visible according to your requirement, tab 1 pressed 

      } 
    else if (position == 2) { 
       Log.d("Page 2", "Pressed"); 
       //set Image Button Visibility Gone or visible according to your requirement, tab 1 pressed 

      } 
    else { 
       Log.d("Other Pages", "Pressed"); 

      } 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 

    }); 
関連する問題