在 Tablayout 中隐藏标签 Android
Hide Tab in Tablayout Android
不幸的是 other question wasn't answered 关于如何在 android.support.design.widget.TabLayout
中隐藏选项卡。
其他问题是TabHost
,我不想更改我的代码。
我想隐藏选项卡 "Three"。
片段:
viewPager = (ViewPager) rootView.findViewById(R.id.search_viewPager);
viewPager.addOnPageChangeListener(viewPagerListener);
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) rootView.findViewById(R.id.search_tabs);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/search_tabs"
style="@style/TabLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:elevation="1dp" />
<android.support.v4.view.ViewPager
android:id="@+id/search_viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</LinearLayout>
修改你传递给viewpager
的adaterList
:删除第三个元素"Three",所以它会消失
编辑
当第三个选项卡出现时,只需更新 adapterList/viewPager
。你可以有一些想法研究this
//To hide the first tab
((ViewGroup) tabLayout.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
//Set the next tab as selected tab
TabLayout.Tab tab = tabLayout.getTabAt(1);
tab.select();
如果您想保存之前的视图(如果您在标签项中使用了任何自定义视图):
View view=tab_layout.getTabAt(3).getCustomView();
然后删除索引 idx 处的选项卡(比如索引 2):
tab_layout.removeTabAt(idx);
然后要恢复该选项卡,请使用:
tab_layout.addTab(tab_layout.newTab().setCustomView(view));
您可以通过 tablayout.getTabAt(int index)
访问 TabLayout 的 TabView 并将其转换为 LinearLayout
这样您就可以将其可见性设置为 GONE
((LinearLayout) tabLayout.getTabAt(0).view).setVisibility(View.GONE);
这项工作适用于
((LinearLayout) Objects.requireNonNull(tabLayout.getTabAt(1)).view).setVisibility(View.INVISIBLE);
我建议你使用下面的代码
var tabLayout = FindViewById<TabLayout>(YOUR_TAB_LAYOUT_ID);
tabLayout.SetupWithViewPager(YOUR_CUSTOM_VIEWPAGER);
**tabLayout.GetTabAt(0).View.Visibility = ViewStates.Gone;**
要实现它,只需将虚拟选项卡插入索引 0。您可以在自定义 viewpager 适配器中执行此操作。这是代码。
adapter.addFragment(Fragmetn.NewInstance(), "none");
在 Kotlin 中,您可以在如下定义 TabLayoutMediator 后隐藏 Tab
TabLayoutMediator(
tabLayout,
viewPager
) { tab, position ->
tab.text = when (position) {
// define tab titles
}
}.attach()
((tabLayout.getTabAt(position)?.view))?.isVisible = false
不幸的是 other question wasn't answered 关于如何在 android.support.design.widget.TabLayout
中隐藏选项卡。
其他问题是TabHost
,我不想更改我的代码。
我想隐藏选项卡 "Three"。
片段:
viewPager = (ViewPager) rootView.findViewById(R.id.search_viewPager);
viewPager.addOnPageChangeListener(viewPagerListener);
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) rootView.findViewById(R.id.search_tabs);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/search_tabs"
style="@style/TabLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:elevation="1dp" />
<android.support.v4.view.ViewPager
android:id="@+id/search_viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</LinearLayout>
修改你传递给viewpager
的adaterList
:删除第三个元素"Three",所以它会消失
编辑
当第三个选项卡出现时,只需更新 adapterList/viewPager
。你可以有一些想法研究this
//To hide the first tab
((ViewGroup) tabLayout.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
//Set the next tab as selected tab
TabLayout.Tab tab = tabLayout.getTabAt(1);
tab.select();
如果您想保存之前的视图(如果您在标签项中使用了任何自定义视图):
View view=tab_layout.getTabAt(3).getCustomView();
然后删除索引 idx 处的选项卡(比如索引 2):
tab_layout.removeTabAt(idx);
然后要恢复该选项卡,请使用:
tab_layout.addTab(tab_layout.newTab().setCustomView(view));
您可以通过 tablayout.getTabAt(int index)
访问 TabLayout 的 TabView 并将其转换为 LinearLayout
这样您就可以将其可见性设置为 GONE
((LinearLayout) tabLayout.getTabAt(0).view).setVisibility(View.GONE);
这项工作适用于
((LinearLayout) Objects.requireNonNull(tabLayout.getTabAt(1)).view).setVisibility(View.INVISIBLE);
我建议你使用下面的代码
var tabLayout = FindViewById<TabLayout>(YOUR_TAB_LAYOUT_ID);
tabLayout.SetupWithViewPager(YOUR_CUSTOM_VIEWPAGER);
**tabLayout.GetTabAt(0).View.Visibility = ViewStates.Gone;**
要实现它,只需将虚拟选项卡插入索引 0。您可以在自定义 viewpager 适配器中执行此操作。这是代码。
adapter.addFragment(Fragmetn.NewInstance(), "none");
在 Kotlin 中,您可以在如下定义 TabLayoutMediator 后隐藏 Tab
TabLayoutMediator(
tabLayout,
viewPager
) { tab, position ->
tab.text = when (position) {
// define tab titles
}
}.attach()
((tabLayout.getTabAt(position)?.view))?.isVisible = false