2016-10-20 2 views
3

글쎄, 내 케이스의 특정 조각 인 HISTORY 탭에서만 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

나는이만큼 간단하게 생각할 것 :

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

: 당신처럼 각 페이지에 할당 페이지 번호와 같은 유지 보수를 개선하기 위해 정리를 많이 할 수

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

따라서 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(); 
}  
관련 문제