我遇到状态栏不会变成半透明的问题。半透明状态栏和导航条形码本身可以正常工作,但是,当我将Google Maps Fragment实施到活动视图中时,半透明条形变为灰色。我已经使用完全透明的状态栏对其进行了测试,但最初会再次运行,然后在添加地图后会显示白色背景。好像谷歌地图有某种叠加效果。任何帮助都可以通过Google Maps API获得状态栏的半透明效果。
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mapwithmarker.MapsMarkerActivity"
tools:layout="@layout/activity_main" />
</android.support.v4.widget.DrawerLayout>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
答案 0 :(得分:4)
我找到了解决方案。如果有人在抽屉布局中添加地图,请将DrawerLayout中的android:fitsSystemWindows
设置为"false"
。
答案 1 :(得分:1)
如果您将地图添加到Activity中,请在onCreate()方法中编写以下代码行:
window.apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
statusBarColor = Color.TRANSPARENT
}
}
如果在Fragment中添加地图,请在onCreate()方法中添加以下代码行:
activity!!.window.apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
statusBarColor = Color.TRANSPARENT
}
}
答案 2 :(得分:0)
将fitsSystemWindows
设置为false
对我不起作用
但是,负利润确实可以解决问题
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/app_bar_main"
android:id="@+id/fragment_container"
android:fitsSystemWindows="true"
android:padding="0dp">
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-25dp"
map:uiCompass="false"
android:fitsSystemWindows="true" />
</android.support.design.widget.CoordinatorLayout>