web-dev-qa-db-ja.com

ステータスバーの色をAndroid

Androidアプリケーションを構築していますが、ステータスバー(ワイヤレス信号とエリア信号、バッテリーステータスなどを表示する画面上部のバー)を変更したいのですが、そうではありませんワーキング。

XMLファイルのプレビューでは、バーに異なる色(使用したいオレンジの色合い)が表示されますが、エミュレーターと携帯電話の両方でアプリケーションを実行すると、色は白のままです。

アクションバーを非表示にして、アプリの上部に灰色の画像を配置します。

これは、XMLファイルのAndroid Studioでのプレビューです。

This is the preview in Android Studio for the XML file

そして、これはアプリケーションのエミュレーションです。

Emulation of the app

これは私のcolors.xmlです:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="theme_color">#D8540D</color>
    <color name="toolbar_title_color">#E66800</color>
    <color name="grey">#d3d3d3</color>
    <color name="maroon">#7f0000</color>
    <color name="color_textual">#8D5020</color>
    <color name="chef_bg_color">#F7F7F7</color>
    <color name="line_color">#dddddd</color>

</resources>

そしてこれは私の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>

        <item name="Android:statusBarColor">@color/theme_color</item>
        <item name="Android:navigationBarColor">@color/theme_color</item>
        <item name="Android:colorEdgeEffect">@color/theme_color</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>

Androidマニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.mvaguimaraes.bt">

    <uses-permission Android:name="Android.permission.INTERNET" />

    <application
        Android:allowBackup="true"
        Android:icon="@drawable/icon"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">
        <activity
            Android:name=".MainScreen"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity Android:name=".MainActivity"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme.NoActionBar">

        </activity>

        <activity Android:name=".OrderDetails"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme.NoActionBar">

        </activity>

        <activity Android:name=".PastOrderDetails"
            Android:label="@string/app_name"
            Android:theme="@style/AppTheme.NoActionBar">

        </activity>
    </application>

</manifest>
5

テーマをNoActionBarとして指定したすべてのアクティビティのマニフェストファイル。

ただし、NoActionBarテーマ内のstyles.xmlでは、コード行の下に追加していません。

<item name="Android:statusBarColor">@color/theme_color</item>

上記のコード行をNoActionBarテーマのスタイルで追加すると、ステータスバーの色が確実に変わります。

ただし、はい、APIレベル21以上で機能します。

6
Gaurav Singh

KitKatのステータスバーの色は変更されませんが、LollipopとMarshmallowで変更されていることがわかります。

「解像度/値/色」で

<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>

ここでキットカットの後、ステータスバーに「colorPrimaryDark」が適用され、ツールバー/アクションバーに「colourPrimary」が自動的に使用されます。

このリンクが役立つかもしれません https://developer.Android.com/training/material/theme.html

2
Yellappa

次の数行を使用して、ステータスバーの色を変更できます。

Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
window.setStatusBarColor(Color.parseColor("#your color"));
1
Vajani Kishan