我正在制作一个布局,我希望我的图像可以在状态栏后面绘制。我正在使用协调器布局,但遇到了一个奇怪的问题。 当我使用下面给出的代码时,我能够实现this
<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">
<ImageView
android:id="@+id/album_art_playing"
android:layout_width="match_parent"
android:layout_height="360dp"
android:fitsSystemWindows="true"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:fitsSystemWindows="true"/>
.....
</android.support.design.widget.CoordinatorLayout>
但是当我将工具栏视图移到图像视图上方时,我得到this,布局文件如下所示:
<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.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:fitsSystemWindows="true"/>
<ImageView
android:id="@+id/album_art_playing"
android:layout_width="match_parent"
android:layout_height="360dp"
android:fitsSystemWindows="true"/>
....
</android.support.design.widget.CoordinatorLayout>
我无法理解为什么在图像视图上方移动工具栏小部件会更改图像视图的行为,并且不会在状态栏后面绘制图像。我怎样才能做到这一点。我希望我的图像在状态栏后面显示,但也希望我的工具栏标题和图标显示为现在的状态。
答案 0 :(得分:0)
你是对的,
可能与图像视图重叠。
因为CoordinatorLayout
从documentation of CoordinatorLayout
扩展FrameLayout
CoordinatorLayout是一个超级动力的FrameLayout。
因此它继承了FrameLayout
的所有属性,因此每当您在另一个视图之后放置视图时,它将与视图重叠。
现在出现了主要问题 为什么更改工具栏的顺序时会看到白色/灰色状态栏?
这是因为如果您在主题中使用以下内容,从棒棒糖或以上系统可以绘制半透明状态栏(如果您不使用此功能,则无法工作) < / p>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
所以在你的第一张图片中,它显示的是灰色,因为你还没有定义工具栏的背景颜色(它只考虑它下面的视图,在这种情况下,工具栏在它下面),只是改变工具栏的颜色为粉红色,它会显示这样的预览
我认为当你改变工具栏的颜色时你会得到这个想法。
如果您需要透明工具栏,则必须为工具栏设置100%透明背景颜色,并确保设置
在OnCreate
的行动中:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE|View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
并在你的主题中:
<item name="android:statusBarColor">@android:color/transparent</item>