自動生成されたAppTheme.NoActionBar
をAndroid:theme
を介してアクティビティに適用すると、次のようになります。
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="mypackage">
<application
...
Android:theme="@style/AppTheme">
<activity
Android:name=".MainActivity"
Android:theme="@style/AppTheme.NoActionBar" />
</application>
</manifest>
私のMainActivityは、上部に透明なステータスバーが表示され、最終的には白い背景と白いテキストが表示されます。デバイスが充電中の場合、それが表示される唯一の記号です。
AppTheme.NoActionBarからの透明なActionBar
これが私のvalues/styles.xmlです:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
</resources>
2番目のスタイルでは、デフォルトでAppThemeを継承するAppTheme.NoActionBar
を確認できますが、どちらのスタイルでも、ステータスバーを透明にする必要があることは指定されていません。
この問題に遭遇した場合、values-v21というフォルダーがあり、その中にstyles.xml。このファイルは、API 21 +(Android 5.0 +を使用してデバイスのスタイルを定義します)。このファイルには、おそらくAppTheme.NoActionBar
という名前の次のスタイルも含まれます。聞き覚えがある?
values-v21/styles.xml:
<resources>
<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>
</resources>
AppTheme.NoActionBar
は質問で提供されたvalues/styles.xmlで定義されていますが、これはまだ有効ですが、そのファイルはデバイスでのみ使用されますAPI 21の下。コードを見ると、Wordを最後まで透過的に見るだけで、すぐに問題を特定できます。少し左に行くと、statusBarColor
と出来上がりが見えます。それが問題です。より多くの最新ユーザーにこのスタイルを提供しない場合は、単純にその行のスタイリングを削除できます。
values-v21/styles.xml:
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
</style>
</resources>
そして、これがそのスタイルの削除の結果です:
Good ol 'opaque status bar