如果只有一个片段启用,则不显示选项卡

Do Not Display Tabs if There is Only One Fragment Enabled

我有一个 activity,它有两个片段,在两个选项卡中:描述选项卡和评论选项卡。评论选项卡是可选的,因此当管理员添加描述时,他可以启用或禁用评论。如果他禁用它,我想显示描述,但让它看起来像没有标签,即。从 activity 中隐藏选项卡并仍然显示内容。

因此,如果启用了两个片段,它应该如下所示:

现在,如果我禁用第二个选项卡,我会得到这个:

但这就是我想要的:

寻呼机适配器:

class RestauranPagerAdapter extends FragmentStatePagerAdapter {
private int mNumOfTabs;

    RestauranPagerAdapter(FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.mNumOfTabs = NumOfTabs;
    }

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                return new RestauranFragmentDescription();
            case 1:
                return new RestauranFragmentComments();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return mNumOfTabs;
    }
}

Activity:

TabLayout tabLayout = findViewById(R.id.RestauranTabs);
tabLayout.addTab(tabLayout.newTab().setText(R.string.description));
// tabLayout.addTab(tabLayout.newTab().setText(R.string.comments));
if (!Restauran.getComments_enabled()) {
    tabLayout.addTab(tabLayout.newTab().setText(R.string.comments));
}
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);

final ViewPager viewPager = findViewById(R.id.RestauranViewpager);
final RestauranPagerAdapter adapter = new RestauranPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
viewPager.setOffscreenPageLimit(3);

FloatingActionButton fabGoToMap = findViewById(R.id.fabGoToMap);
fabGoToMap.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    }
});

当您启用唯一描述时,您可以隐藏选项卡布局,如下所示

tabLayout.setVisibility(View.GONE);

因此您的代码应如下所示

TabLayout tabLayout = findViewById(R.id.RestauranTabs);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);

//adding the default one
tabLayout.addTab(tabLayout.newTab().setText(R.string.description));

if (!Restauran.getComments_enabled()) {
    tabLayout.addTab(tabLayout.newTab().setText(R.string.comments));
}else{
    tabLayout.setVisibility(View.GONE);
}

//rest goes as it is
final ViewPager viewPager = findViewById(R.id.RestauranViewpager);
final RestauranPagerAdapter adapter = new RestauranPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
viewPager.setOffscreenPageLimit(3);

FloatingActionButton fabGoToMap = findViewById(R.id.fabGoToMap);
fabGoToMap.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    }
});