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

标签 android tabs

在我的 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"));

我想禁用选项卡 2 和选项卡 3。 我尝试了这个并且它有效:

tabLayout.getChildAt(1).setEnabled(false);
tabLayout.getChildAt(2).setEnabled(false);

但我也想设置 toast 反馈,如果有人点击禁用选项卡,例如“此选项卡未解锁”

为此,我尝试为选项卡 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());
                }
            }

最佳答案

我的 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>

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

View tab = ((ViewGroup) tabLayout.getChildAt(0)).getChildAt(desiredPosition);

然后您可以更改可点击性并设置 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);
    }

关于android 禁用 3 个选项卡中的 2 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677699/

相关文章:

java - 为什么当我尝试下载 Android 支持包修订版 10 时,它一直说找不到文件?

android - 如何在 ActionBar 中引入 Swipeable Tabs?

用于标签的 Android onclicklistener

c# - 在 Windows 窗体中四舍五入选项卡标题

ios - 组合选项卡 View 和分割 View

java - Android 程序不想运行 - "Unfortunately, (myAppName) has stopped."

android - 单击布局中的按钮时在工具栏菜单中打开子菜单

android - Kotlin:如何在 RecyclerView.Adapter 中调用 getSupportFragmentManager()

javascript - 从当前选项卡上下文打开一个新选项卡(何时关闭弹出窗口)?

android - ExoPlayer用来自特定站点的URL口吃