Android禁用3个选项卡中的2个

Spe*_*ter 2 tabs android

在我的android应用中,我设置了如下标签布局:

final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("TAB 1"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 2"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 3"));
Run Code Online (Sandbox Code Playgroud)

我想禁用选项卡2和选项卡3。

tabLayout.getChildAt(1).setEnabled(false);
tabLayout.getChildAt(2).setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

但如果有人点击禁用标签,例如“此标签未解锁”,我也想设置一个敬酒反馈

为此,我尝试为选项卡2和3设置一个onclicklistener。但是,如果我之前用代码禁用了该选项卡,则此侦听器将不起作用。

有谁知道我如何解决这个问题?

更新

@Override
public void onTabSelected(TabLayout.Tab tab) {

                if (tab.getPosition() == 1) {
                    viewPager.setCurrentItem(0);
                    TabLayout.Tab tab1 = tabLayout.getTabAt(0);
                    tab1.select();
                } else {
                    viewPager.setCurrentItem(tab.getPosition());
                }
            }
Run Code Online (Sandbox Code Playgroud)

Bay*_*kin 6

我的TabLayout如下所示

<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.TabItem
        android:id="@+id/tab1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tab1" />

    <android.support.design.widget.TabItem
        android:id="@+id/tab2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tab2" />
    <android.support.design.widget.TabItem
        android:id="@+id/tab3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="tab3" />

</android.support.design.widget.TabLayout>
Run Code Online (Sandbox Code Playgroud)

您必须将要禁用的选项卡转换为视图对象。像这样

View tab = ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(desiredPosition);
Run Code Online (Sandbox Code Playgroud)

那么您可以更改可点击性并设置Alpha,以便启用或禁用所需的外观和功能标签。通过这种方式

ViewGroup tabItem = ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(desiredPosition);
    if (isChecked) {
        tabItem.setClickable(false);
        tabItem.setAlpha( 0.3F);
    }else {
        tabItem.setClickable(true);
        tabItem.setAlpha( 1F);
    }
Run Code Online (Sandbox Code Playgroud)