2016-10-20 24 views
3

嗯,我只想在特定的片段上刪除/隱藏FAB,在我的案例中是HISTORY選項卡。如何在特定的片段上隱藏FAB

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     .... (Overriding methods , I didnt do anything here 
     }); 

我對充氣查看傳呼機

private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new HistoryFragment(), "HISTORY"); 
     adapter.addFragment(new TransactionFragment(), "CURRENT"); 
     adapter.addFragment(new FutureFragment(), "FUTURE"); 

     viewPager.setAdapter(adapter); 

    } 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 

    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

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

    public void addFragment(android.support.v4.app.Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

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

在哪裏,我應該如何修改我的代碼,從歷史記錄片/片段隱藏我的FAB和其他選項卡上再次顯示方法

+0

在HistoryFragment findViewById –

回答

3

我認爲這是如此簡單:

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      if(position == 0) { 
       // hide FAB 
      } else { 
       // show FAB 
      } 
     } 
} 

你可以做很多的清理,提高維護像分配頁碼的每一頁,如:

private static final int PAGE_HISTORY = 0; 
private static final int PAGE_TRANSACTION = 1; 
private static final int PAGE_FUTURE = 2; 

所以,而不是if(position == 0)你說if(position == PAGE_HISTORY)。這樣,如果您更改網頁,則無需更改大量代碼。

+0

讓我試試看。 –

+0

像魅力一樣工作。感謝朋友。 –

0

您可以嘗試將OnTabSelectedListener設置爲TabLayout。

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
    @Override 
    public void onTabSelected(TabLayout.Tab tab) { 

     yourFAB.setVisibilty(View.GONE); 

     // or 

     yourFAB.setVisibilty(View.VISIBLE); 

    } 

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

    } 

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

    } 
}); 
+0

我應該在它辦? –

+0

我只是一個菜鳥哥們請幫忙。 –

+0

我編輯了我的答案 – cuoka

0

只需添加這您在OnPageChangeListener:

@Override 
public void onPageSelected(int position) { 
    if (adapter.getItem(position) instanceof HistoryFragment) fab.hide(); 
    //else fab.show(); 
}