由于选项菜单,如何在Android中取消选择TabLayout的所有选项卡?

由于选项菜单,如何在Android中取消选择TabLayout的所有选项卡?,android,android-fragments,tabs,android-tabs,Android,Android Fragments,Tabs,Android Tabs,我正在开发一个Android应用程序。我正在使用TabLayout作为选项卡。但我并没有对所选选项卡上的片段使用寻呼机视图。相反,我将事件侦听器上的片段替换为视图。选择选项菜单中的项目时,我想取消选择所有选项卡。但我在堆栈溢出中看到了相同的问题。答案是我们不能这样做。因为必须选择一个选项卡 这是我的应用程序的UI设计: 正如您在上面的设计中所看到的,默认情况下选择了“播客”选项卡。这就是问题的开始 这是我的选项菜单和功能的屏幕截图 问题是当我在“播客”选项卡上选择设置时,设置片段被替换。但

我正在开发一个Android应用程序。我正在使用TabLayout作为选项卡。但我并没有对所选选项卡上的片段使用寻呼机视图。相反,我将事件侦听器上的片段替换为视图。选择选项菜单中的项目时,我想取消选择所有选项卡。但我在堆栈溢出中看到了相同的问题。答案是我们不能这样做。因为必须选择一个选项卡

这是我的应用程序的UI设计:

正如您在上面的设计中所看到的,默认情况下选择了“播客”选项卡。这就是问题的开始

这是我的选项菜单和功能的屏幕截图

问题是当我在“播客”选项卡上选择设置时,设置片段被替换。但“播客”选项卡仍处于选中状态。但当我再次点击时,播客列表片段并没有被替换回来。我怎样才能解决这个问题

以下是我在MainActivity中将选项卡添加到选项卡布局的方式:

private void setupTabs() {
        tabLayout.addTab(tabLayout.newTab().setText("Podcasts"));
        tabLayout.addTab(tabLayout.newTab().setText("Playlist"));
        tabLayout.addTab(tabLayout.newTab().setText("Downloads"));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 1:
                        setPlaylistFragment();
                        commitFragment();
                        break;
                    case 2:
                        setDownloadsFragment();
                        commitFragment();
                        break;
                    default:
                        setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT");
                        commitFragment();
                        break;
                }
            }

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

            }

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

            }
        });
    }

按下设置按钮时,可以更改所选选项卡的背景
tabHost.getTabWidget().getChildAt(i)
.setBackgroundColor(Color.parseColor(#393939”)
并将所选选项卡设置为其他选项卡,即
setSelected(1)

您的流程将是这样的。如果您在选项卡1上,单击“设置”按钮,然后单击“按钮”,您可以更改所选选项卡和所选选项卡的背景。现在,当用户选择第一个选项卡时,他可以看到该选项卡的内容


注:由于声誉不高,我没有对你的问题发表评论

我建议你使用布尔值来保存状态,例如,如果我不希望视图a显示,我将通过创建布尔值使其有条件,比如布尔值showA并将其设置为false,在呈现的页面上,我将在单击你所说的选项项时将其设置为true,我将再次将布尔值设置为false,这意味着不会显示,因为它取决于布尔值。应该这样做。希望这有帮助。

我得到了答案。我只需要覆盖onTabReselected。所以我的听众会这样

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 1:
                        setPlaylistFragment();
                        commitFragment();
                        break;
                    case 2:
                        setDownloadsFragment();
                        commitFragment();
                        break;
                    default:
                        setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT");
                        commitFragment();
                        break;
                }
            }

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

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 1:
                        setPlaylistFragment();
                        commitFragment();
                        break;
                    case 2:
                        setDownloadsFragment();
                        commitFragment();
                        break;
                    default:
                        setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT");
                        commitFragment();
                        break;
                }
            }
        });

出于好奇,为什么不使用
ViewPager
tabLayout.setupWithViewPager(ViewPager)因为我也有导航抽屉,所以导航抽屉与ViewPager和TableLayout的关系是独立的。杀戮行为O.Other两者都可以在同一屏幕中实现,例如,A用于抽屉项目,B用于选项项目?然后我将有两个主要的内容视图,并有条件地切换它?