如何在特定片段上隐藏FAB

Sak*_*ana 3 android android-viewpager floating-action-button

好吧,我只想在特定片段上删除/隐藏FAB,在我的情况下为“历史记录”选项卡。

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        .... (Overriding methods , I didnt do anything here
        });
Run Code Online (Sandbox Code Playgroud)

我给View Pager充气的方法

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该在哪里以及如何更改代码以从“历史记录”选项卡/片段中隐藏我的FAB,然后在其他选项卡上再次显示

Dee*_*eeV 5

我认为这很简单:

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

您可以进行大量清理以改善维护,例如为每个页面分配页码,例如:

private static final int PAGE_HISTORY = 0;
private static final int PAGE_TRANSACTION = 1;
private static final int PAGE_FUTURE = 2;
Run Code Online (Sandbox Code Playgroud)

所以不用if(position == 0)你说if(position == PAGE_HISTORY)。这样,如果您要更改页面,则无需更改大量代码。