2016-10-20 20 views
3

まあ、私の場合、特定のフラグメント、履歴タブでのみFABを削除/非表示にしたいのですが。ビューポケットベル特定のフラグメントでFABを非表示にする方法

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を隠すために自分のコードに変更を行い、他のタブに再び示さなければならないかを膨張させるための

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

私の方法

+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(); 
}  
関連する問題