残念ながら 他の質問には答えられませんでしたAndroid.support.design.widget.TabLayout
でタブを非表示にする方法について。他の質問はTabHost
で行われます、コードを変更したくありません。
「3」タブを非表示にします。
フラグメント:
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>
adaterList
に渡すviewpager
を変更します。3番目の要素「Three」を削除して、消えるようにします。
[〜#〜]編集[〜#〜]
3番目のタブが表示されたら、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();
tablayout.getTabAt(int index)
を介してTabLayoutのTabViewにアクセスし、それをLinearLayout
としてキャストして、可視性をGONEに設定できます。
((LinearLayout) tabLayout.getTabAt(0).view).setVisibility(View.GONE);
前のビューを保存する場合(タブアイテム内でカスタムビューを使用した場合):
View view=tab_layout.getTabAt(3).getCustomView();
次に、インデックスidx(たとえばインデックス2)のタブを削除します。
tab_layout.removeTabAt(idx);
次に、そのタブを復元するには、次を使用します。
tab_layout.addTab(tab_layout.newTab().setCustomView(view));