0

隱藏我想要一個工具欄+ FrameLyout(片段)雖然滾動片段工具欄應該能在android系統

裏面的FrameLayout(TabLayout +查看傳呼機)

我已經添加了什麼我已經嘗試了代碼。請看下面的代碼是我曾嘗試或給一些備用的想法對於這種情況

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

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

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     BlankFragment mSlidingTabsHomeFragment = new BlankFragment(); 

     fragmentManager.beginTransaction() 
       .replace(R.id.Container, mSlidingTabsHomeFragment) 
       .commit(); 
    } 
} 

activity_main.xml中

<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/coordinatorLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <!-- AppBar Layout --> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     android:layout_width="fill_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="fill_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/Container" > 
    </FrameLayout> 

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

BlankFragment.java

public class BlankFragment extends Fragment { 

    public BlankFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_blank, container, false); 

     ViewPager viewPager = (ViewPager)view. findViewById(R.id.viewpager); 
     if (viewPager != null) { 
      setupViewPager(viewPager); 
     } 

     TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

     return view; 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     Adapter adapter = new Adapter(getActivity().getSupportFragmentManager()); 
     adapter.addFragment(new CheeseListFragment(), "Category 1"); 
     adapter.addFragment(new CheeseListFragment(), "Category 2"); 
     adapter.addFragment(new CheeseListFragment(), "Category 3"); 
     viewPager.setAdapter(adapter); 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
    } 

    static class Adapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragments = new ArrayList<>(); 
     private final List<String> mFragmentTitles = new ArrayList<>(); 

     public Adapter(FragmentManager fm) { 
      super(fm); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragments.add(fragment); 
      mFragmentTitles.add(title); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragments.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragments.size(); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitles.get(position); 
     } 
    } 

fragment_blank.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

    <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" /> 

</LinearLayout> 
+0

是有必要讓你有一個framelayout並在Fragment中顯示viewpager?爲什麼你不能把viewpager放在活動 –

+0

的主佈局中,因爲我必須重構現有的代碼 – Deva

+0

,在viewpager中更改頁面或垂直滾動​​片段時,必須隱藏工具欄。 –

回答

1

您可以撥打viewpager.onPageChangeListener和隱藏在其onPageScrolled method.below工具欄是語法: -

mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      //hide your toolbar here 
      } 

      @Override 
      public void onPageSelected(int position) { 
       //display it again. 


      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 
       // do nothing 
      } 
     });