无法使状态栏半透明
Cannot make status bar translucent
编辑: 更相关的问题发布在这里:
我知道可以在 API19+ 中完成。我也读过 this and this ,似乎可以很容易地完成。但是我无法完成它。这是我在 values-v19
文件夹中的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
我还将 appcompat 主题更改为 Theme.Holo.Light.NoActionBar.TranslucentDecor
(当然使用 Activity
而不是 AppCompatActivity
);没有任何变化。
这是 genymotion 模拟器的屏幕截图 api-22(状态栏稳定;在真实设备上结果相同):
现在奇怪的是:在布局的预览 window 中,当您 select api-23(在 appcompat 和 holo 主题上)时,我明白了结果(半透明):
api-19(还有 api-21 和 22)的预览是这样的:
这很混乱,我不知道我做错了什么。任何帮助将不胜感激。
编辑:
如果我添加:
<item name="colorPrimaryDark">@color/primary_dark</item>
实体状态栏改变颜色:
另一个奇怪的事情是导航抽屉超出了该死的栏:
终于找到问题的根源了。我正在使用 MaterialDrawer 库将抽屉添加到我的 activity。当我删除它时,一切正常。我将 post 另一个问题来解决这个问题,并将在编辑中添加 link。
这对我有用,添加到样式中-v21.xml:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
并在 android.support.v4.widget.DrawerLayout
下的 activity_main.xml 中:
android:android:fitsSystemWindows="true">
样式-v21.xml
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
styles.xml
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@id/app_bar"
layout="@layout/app_bar" />
<FrameLayout
android:id="@id/container_body"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_weight="1">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_view"/>
</android.support.v4.widget.DrawerLayout>
app_bar.xml
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>
编辑: 更相关的问题发布在这里:
我知道可以在 API19+ 中完成。我也读过 this and this ,似乎可以很容易地完成。但是我无法完成它。这是我在 values-v19
文件夹中的主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
我还将 appcompat 主题更改为 Theme.Holo.Light.NoActionBar.TranslucentDecor
(当然使用 Activity
而不是 AppCompatActivity
);没有任何变化。
这是 genymotion 模拟器的屏幕截图 api-22(状态栏稳定;在真实设备上结果相同):
现在奇怪的是:在布局的预览 window 中,当您 select api-23(在 appcompat 和 holo 主题上)时,我明白了结果(半透明):
api-19(还有 api-21 和 22)的预览是这样的:
这很混乱,我不知道我做错了什么。任何帮助将不胜感激。
编辑:
如果我添加:
<item name="colorPrimaryDark">@color/primary_dark</item>
实体状态栏改变颜色:
另一个奇怪的事情是导航抽屉超出了该死的栏:
终于找到问题的根源了。我正在使用 MaterialDrawer 库将抽屉添加到我的 activity。当我删除它时,一切正常。我将 post 另一个问题来解决这个问题,并将在编辑中添加 link。
这对我有用,添加到样式中-v21.xml:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
并在 android.support.v4.widget.DrawerLayout
下的 activity_main.xml 中:
android:android:fitsSystemWindows="true">
样式-v21.xml
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
styles.xml
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@id/app_bar"
layout="@layout/app_bar" />
<FrameLayout
android:id="@id/container_body"
android:layout_width="fill_parent"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_weight="1">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_view"/>
</android.support.v4.widget.DrawerLayout>
app_bar.xml
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>