Using navigationView with tabLayout

后端 未结 3 1810
别那么骄傲
别那么骄傲 2020-12-31 04:24

So I\'ve recently been working on updating my app to use the new material design support library. My application has one main activity with a drawerLayout and navigation vie

3条回答
  •  臣服心动
    2020-12-31 05:07

    You can do it like this. I have checked by doing it myself and it works very well

    Step 1 : Create a layout of your main activity like this

        
    
            
    
            
        
    
        
    
    
    

    Step 2 :

    In your activity you need to set onpagechangelistener on your viewpager:

     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
      @Override
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
      }
    
      @Override
      public void onPageSelected(int position) {
            if(position ==0){
              tabLayout.setVisibility(View.GONE);
            }else{
              tabLayout.setVisibility(View.VISIBLE);
            }
      }
    
      @Override
      public void onPageScrollStateChanged(int state) {
    
      }
    });
    

    After this you need to add viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    Step 3 :

    This is how you can make your adapter for viewpager :

    public class WiFiPagerAdapter extends FragmentPagerAdapter { private final List registeredFragments = new ArrayList<>();

    public WiFiPagerAdapter(final FragmentManager fm) {
      super(fm);
    }
    
    @Override
    public Fragment getItem(final int pos) {
      Fragment fragment;
      fragment = WiFiFragment.newInstance(pos);
      registeredFragments.add(pos, fragment);
      return fragment;
    }
    
    @Override
    public int getCount() {
      return tabLayout.getTabCount();
    }
    
    public List getRegisteredFragmentsList() {
      return registeredFragments;
    }
    
    @Nullable
    public Fragment getRegisteredFragment(final int position) {
      final Fragment wr = registeredFragments.get(position);
      if (wr != null) {
        return wr;
      } else {
        return null;
      }
    }
    
    @Override
    public void notifyDataSetChanged() {
      super.notifyDataSetChanged();
      for (int i = 0; i < registeredFragments.size(); i++) {
        WiFiFragment wiFiFragment = ((WiFiFragment) registeredFragments.get(i));
        wiFiFragment.setWiFiFragmentRecyclerViewAdapter();
      }
    }
    

    }

提交回复
热议问题