如何停止操作栏向上移动

时间:2017-01-17 02:34:42

标签: android android-layout

我正在使用Android Studio 2.2.3创建新的Tabs项目,为每个标签添加一些片段。然后添加标签图标。一切都很好看。 但, 当我滚动时,特别是动作栏上下移动。它看起来很难看。请查看屏幕截图(标题和填充区域,我已添加):

ugly screen when actionbar move up

我的问题是:

  1. 如何阻止ActionBar上下移动?我想要 稍后处理它(当用户滚动时可能隐藏和取消隐藏它 查看Android 5.1的联系方式。)
  2. 如果我不能停止运动, 我能做什么(使用XML文件)来摆脱填充区域?
  3. 我刚刚开始学习android,所以如果这些问题不够好,请原谅我。

    这是我的主要活动布局文件(它是Android Studio创建的原创文件):

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/appbar_padding_top"
        android:theme="@style/AppTheme.AppBarOverlay">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">
    
        </android.support.v7.widget.Toolbar>
    
        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </android.support.design.widget.AppBarLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />
    

    感谢。

1 个答案:

答案 0 :(得分:0)

在根布局中添加android:fitsSystemWindows="true",即按以下方式修改:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/appbar_padding_top"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">

    <!-- rest of your layout here -->

</android.support.design.widget.AppBarLayout>

有关Android文档android:fitsSystemWindows的详情:

  

内部属性,根据系统窗口调整视图布局   作为状态栏。如果为true,则调整此视图的填充以便离开   系统窗口的空间。只有在此视图出现时才会生效   非嵌入式活动。

     

必须是布尔值,“true”或“false”。

     

这也可能是对资源的引用(在表单中)   “@ [package:] type:name”)或主题属性(在表单中   “?[package:] [type:] name”)包含此类型的值。

     

这对应于全局属性资源符号   fitsSystemWindows。

对于滚动问题,请从片段布局中删除以下行 -

app:layout_behavior="@string/appbar_scrolling_view_behavior"

从主要活动的布局中,从工具栏标签下删除以下行 -

    app:layout_scrollFlags="scroll|enterAlways"