在滑动视图上隐藏标签(片段)?

时间:2013-07-08 15:24:03

标签: android android-fragments

我终于赶上Android 4.0+世界并将我的活动转换为片段。我正在实现滑动视图样式选项卡,并且需要能够根据我传入活动的额外内容禁用选项卡。我这样做的旧方法就是这样,但我似乎无法通过滑动视图弄清楚如何做到这一点。

tabHost.getTabWidget().getChildAt(1).setVisibility(View.GONE);

tabHost不再适用。现在我有一个FragmentPagerAdapter和ViewPager,但不知道如何使用它们来禁用选项卡。提前感谢任何指针!

1 个答案:

答案 0 :(得分:0)

我设法确定如何做到这一点,但我不知道这是最好的方法。我必须做的是将一个布尔值传递给我的FragmentPagerAdapter实现,并且只有在我处于搜索模式时才允许创建一个片段。

    /**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    boolean isSearching = false;

    public SectionsPagerAdapter(FragmentManager fm, boolean isSearching) {
        super(fm);
        this.isSearching = isSearching; 
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.

        Fragment fragment = null;

        switch (position) {

        case 0:
            fragment = new UserGeneralFragment();
            break;

        case 1:
            if (!isSearching) fragment = new CommentListFragment();
            break;
        }

        return fragment;            
    }

    @Override
    public int getCount() {
        if (!isSearching) return 2;
        else return 1;
    }   

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return getString(R.string.activity_user_tab_general).toUpperCase(l);
        case 1:
            if (!isSearching) return getString(R.string.activity_user_tab_comments).toUpperCase(l);
            break;
        }
        return null;
    }
}