TabLayout
のAppBarLayout
をプログラムで非表示/表示したい。可視性をVISIBLE
とGONE
に設定するだけでは不十分です。タブが後退している間に変更をアニメーション化し、コンテンツでスペースを再利用し、タブが表示されたらスペースを残したいからです。
以下は私のレイアウトXMLの関連部分です-
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<Android.support.design.widget.TabLayout
Android:id="@Android:id/tabs"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"
app:tabMode="scrollable"
Android:layout_marginStart="42dp"
Android:layout_marginLeft="42dp"
style="@style/MainTabLayout">
</Android.support.design.widget.TabLayout>
</Android.support.design.widget.AppBarLayout>
他のViewGroup
サブクラスと同様に、AppBarLayout
では、子ビューの追加/削除中に自動アニメーションを使用できます。レイアウトファイルに_Android:animateLayoutChanges="true"
_(デフォルトはfalse
)を追加するだけです。
ビューがなくなったときにスペースコンテンツを再利用する場合は、setVisibility(View.GONE)
ではなくsetVisibility(View.INVISIBLE)
を使用するだけです。後者は、非表示のビューのスペースを保持するためです。