1 题: 以编程方式隐藏/显示AppBarLayout中的android支持设计TabLayout

在...创建的问题 Sun, Sep 13, 2015 12:00 AM

我想以编程方式隐藏/显示TabLayout中的AppBarLayout。简单地将可见性设置为VISIBLEGONE是不够的,因为我想要对变化进行动画处理并使用我的内容回收空间,同时标签撤退并在标签显示后退出空间。

以下是我的布局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>
    
12
  1. 要为更改设置动画,只需将android:animateLayoutChanges =“true”添加到父AppBarLayout即可。也就是说,View.GONE就足够了。
    2015-09-13 13:37:05Z
  2. 无缝地工作!谢谢!如果您可以将其作为答案发布,我将能够接受它。
    2015-09-13 14:25:45Z
  3. 醇>
    1答案                              1 跨度>                         

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

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

        
    20
    2015-09-13 15:35:06Z
来源放置 这里