使用 TabLayout 时如何禁用选择某些选项卡?

Yan*_*hof 5 android android-fragments

我使用控件 android.support.design.widget.TabLayout

我有 4 个选项卡 - 在每个选项卡上我显示一些 ViewPager -(使用片段来显示不同的 viewPager)

我想禁用所有选项卡,直到用户添加一些存在于第一个选项卡上的数据。

我没有找到禁用选项卡的任何方法。

编码:

 <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/detailsElementBackground"
        android:clickable="true"
        app:tabGravity="center"
        app:tabMode="scrollable"
        app:tabTextAppearance="@style/MineCustomTabText" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.AppBarLayout>


 ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());


    adapter.addFragment(new Fragment1(), "Fragment1");
    adapter.addFragment(new Fragment2(), "Fragment2");
    adapter.addFragment(new Fragment3(), "Fragment3");
    adapter.addFragment(new Fragment4(), "Fragment4");
Run Code Online (Sandbox Code Playgroud)

// 需要禁用 Fragment2 & Fragment3 & Fragment4 直到用户添加一些存在于 Fragment1 的字符串

Adv*_*Dog 2

如果您想处理 TabLayout 的 onTabSelected ,您可以执行此操作并检查是否允许它们显示该片段。

tab_layout.addOnTabSelectedListener( new TabLayout.OnTabSelectedListener() {
            override onTabReselected( TabLayout.Tab tab ) {}
            override onTabUnselected( TabLayout.Tab tab ) {}
            override onTabSelected( TabLayout.Tab tab ) {
                if( ... is not disabled )
                pager.currentItem = tab.position
            }

        })
Run Code Online (Sandbox Code Playgroud)