12

我想以编程方式隐藏/显示TabLayout我的AppBarLayout. 仅将可见性设置为VISIBLEandGONE是不够的,因为我想为更改设置动画并使用我的内容回收空间,同时选项卡撤退并在选项卡显示回来后离开空间。

以下是我的布局 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>
4

1 回答 1

20

与任何子ViewGroup类一样,AppBarLayout允许在添加/删除子视图期间自动动画。您只需要在布局文件中添加android:animateLayoutChanges="true"(默认为false)。

至于在视图消失时回收空间内容,您所要做的就是使用setVisibility(View.GONE)而不是setVisibility(View.INVISIBLE),因为后者为不可见视图保留了空间。

于 2015-09-13T15:35:06.747 回答