【问题标题】:Android status bar scrolling up with coordinator layout, leaving status icons overlapping toolbar titleAndroid 状态栏与协调器布局一起向上滚动,使状态图标与工具栏标题重叠
【发布时间】:2016-03-03 13:55:26
【问题描述】:

我在使用包含 AppBarLayout(包含 ToolBar 和 TabLayout)和 ViewPager(包含片段)作为子级的 Coordinator 布局时遇到问题。我希望在向下滚动时隐藏顶栏,并在向上滚动时显示。但是,当我向下滚动时,状态栏也会向上滚动,将顶部栏留在状态图标下方,被它们重叠。

我尝试将 android:fitsSystemWindows="true" 添加到 AppBarLayout 和 ViewPager 但没有任何改变。

下面是使用的代码和显示两种状态的快照:

<android.support.design.widget.CoordinatorLayout
    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:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <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/ThemeOverlay.AppCompat.Dark.ActionBar"/>

        <android.support.design.widget.TabLayout
            android:id="@+id/sliding_tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMaxWidth="0dp"
            app:tabGravity="fill"
            app:tabMode="fixed"/>

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

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

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

【问题讨论】:

  • 我遇到了同样的问题,我能够解决它,但我没有代码!几种可能性:a) fitsSystemWindows="true" 在您的 AppBarLayout 上,b) 将 contentScrim 添加到您的 AppBarLayoutToolbar (app:contentScrim="@color/primaryDark"),或 c) 尝试使用 CollapsingToolbarLayout 而不是 AppBarLayout ,但不要给它折叠滚动标志。希望其中之一有所帮助!

标签: android xml android-layout android-coordinatorlayout


【解决方案1】:

查看活动的主题,如果主题类似于@style/AppTheme.NoActionBar 或没有ActionBar 的一个主题,请尝试添加颜色,您必须具有类似这样的样式(v21):

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>    
</style>

改成:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
</style>

【讨论】:

  • 如果您不想使用导航抽屉例如显示透明状态栏,这没关系...
  • @CaptRisky,如果我也想使用导航抽屉怎么办?
  • @frozzyk 我正在使用材料抽屉(mike penz),我不得不阻止它向上滚动,还没有找到解决方案。很确定 OP 使用的库与您在状态栏区域中看到的 appBar 的高度相同。
  • 应该使用“?attr/colorPrimaryDark”来支持多主题应用。
  • @CaptRisky 你找到解决方案了吗?我有 2 个活动,一个带有导航抽屉,一个没有 - 一个在滚动时按预期工作(工具栏消失),但是第二个在状态栏下没有正确执行,我不能使用 &lt;item name="android:statusBarColor"&gt;@color/colorPrimaryDark&lt;/item&gt; 因为导航抽屉的。
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多