半透明状态栏使布局超出界限(显示后面的视图)

时间:2018-03-13 23:32:40

标签: android xml styles

我想要一个半透明的状态栏,我发现了这个,

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

是的,当我的折叠工具栏/ appbar展开时,它使我的状态栏保持半透明状态

但问题是其中一个视图(imageView)落后于其他一个视图(看起来它的父布局超出范围,请参阅附加图像)

opaque status bar, please see the image at the bottom

之前我没有像这样的任何问题

non-translucent status bar

这是我的xml ,我尽量删除,请耐心等待,

<?xml version="1.0" encoding="utf-8"?>
<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:background="@android:color/background_light">

<android.support.design.widget.AppBarLayout
    android:id="@+id/mHomeAppBar"
    android:layout_width="match_parent"
    android:layout_height="430dp"
    android:background="@color/colorPrimaryDark"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/main.collapsing"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"
        app:title="">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="15dp"
            app:layout_collapseMode="parallax"
            app:layout_scrollFlags="scroll|enterAlwaysCollapsed">

            <ImageView
                android:id="@+id/image_view_on_bottom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:srcCompat="@drawable/ic_near_me_white_18dp"/>

        </android.support.constraint.ConstraintLayout>

        <android.support.v7.widget.Toolbar
            android:id="@+id/mHomeToolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:navigationIcon="?attr/homeAsUpIndicator"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

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

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

<android.support.v4.widget.NestedScrollView
    android:id="@+id/mHomeScrollView"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/mLayoutTabComponents"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:visibility="visible">

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

            <android.support.v4.view.ViewPager
                android:id="@+id/mHomeViewPager"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"

                app:layout_behavior="@string/appbar_scrolling_view_behavior" />
        </LinearLayout>


    </android.support.constraint.ConstraintLayout>

  </android.support.v4.widget.NestedScrollView>

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

,这是风格

<style name = "AppThemeNoActionBar" parent = 
"Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimaryDark</item>
    <item name="android:subtitle">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:background">@null</item>
    <!-- Support library compatibility -->
    <item name="background">@null</item>
</style>

我尝试了一切,我试图在每个父容器和布局中放置app:layout_behavior =“@ string / appbar_scrolling_view_behavior”,我试图将填充TabLayout的tabGravity从填充移除到没有,但仍然没有运气:(,可以有人帮我弄错了什么,我知道我错过了一些关于风格的东西,但是请把我放在正确的方向,再次,如果xml代码有点长,我很抱歉,提前感谢!

更新:我删除了布局xml上的所有不必要的视图内容。任何人? :(

1 个答案:

答案 0 :(得分:0)

我设法通过设置

来解决我的问题
fitSystemWindows 

为假

这导致状态栏删除它生成的填充,然后我添加了一个25dp顶边距上的下一个布局,是一个包含所有子视图AppBarLayout,现在它完美的作品,因为我想要的。

感谢这些帖子,如果每个人遇到与半透明状态栏相同或相关的问题,请看看这里

Translucent/Transparent status bar + CoordinatorLayout + Toolbar + Fragment

Using windowTranslucentStatus with CollapsingToolbarLayout