我正在开发一款Android应用。我正在使用TabLayout作为标签。但我没有在选定的选项卡上使用分页器视图作为片段。相反,我将事件监听器上的片段替换为视图。我想在选择选项菜单中的项目时取消选择所有选项卡。但我在Stack Overflow中看到了一个相同的问题。答案是做不到这一点。因为必须选择一个标签。
这是我的应用的UI设计:
正如您在上面的设计中所看到的,默认情况下会选择PODCASTS选项卡。这是问题的开始。
以下是我的选项菜单和功能的屏幕截图
问题是当我在PODCASTS选项卡上选择设置时,设置片段被替换。但仍然选择了PODCASTS选项卡。但是当我再次点击时,播客列表片段不会被替换回来。我该如何解决这个问题?
这就是我在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) {
}
});
}
答案 0 :(得分:1)
我得到了答案。我只需要覆盖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;
}
}
});
答案 1 :(得分:0)
按下设置按钮时,您可以更改所选标签的背景
tabHost.getTabWidget().getChildAt(i)
.setBackgroundColor(Color.parseColor("#393939"));
并将所选标签设置为其他标签,即setSelected(1)
您的流程将是这样的。如果您在tab-1上并单击设置按钮然后单击按钮,则可以更改所选选项卡和所选选项卡的背景。现在,当用户选择第一个选项卡时,他可以看到该选项卡含量
P.s:由于声誉较低,我没有在你的问题上发表评论
答案 2 :(得分:0)
我建议您使用布尔值来保存状态,例如,如果我不想要显示视图A,我将通过创建布尔表示布尔showA并将其设置为false来使其成为条件,在页面上渲染,我将它设置为true,点击您说的选项Item,我将再次将该布尔值设置为false,这意味着A将不会显示,因为它取决于布尔值。应该这样做。希望这有帮助。