Bagaimana cara mengubah warna bilah status di Android?


427

Pertama-tama ini bukan duplikat seperti pada Bagaimana mengubah warna latar belakang status bar android

Bagaimana cara mengubah warna bilah status yang seharusnya sama dengan di bilah navigasi.

Saya ingin warna bilah status sama dengan warna bilah navigasi

masukkan deskripsi gambar di sini


2
hanya mungkin setelah kitkat @MarkBuikema
codercat

4
Seperti yang disarankan Niels, ada ATRIBUT TEMA sejak v21 disebut android:statusBarColor. Anda bisa menambahkannya ke values-v21/styles.xml.
Levite

@MarkBuikema Bagaimana itu terkait dengan akses root!
steve moretz

Jawaban:


625

Android 5.0 Lollipop memperkenalkan tema Desain Bahan yang secara otomatis mewarnai bilah status berdasarkan colorPrimaryDarknilai tema.

Ini didukung pada perangkat pre-lollipop berkat dukungan perpustakaan-v7-appcompat mulai dari versi 21. Blogpost tentang dukungan appcompat v21 dari Chris Banes

masukkan deskripsi gambar di sini

Baca lebih lanjut tentang Tema Bahan di situs web resmi Pengembang Android


29
dalam beberapa alasan atribut colorPrimaryDark tidak bekerja untuk saya. mencoba emulator v21
menyimpang

3
Ini berfungsi, Anda harus melihat perubahan pada emulator bukan pada pratinjau tata letak [tidak ditampilkan di sana]
Mightian

6
colorPrimaryDark tidak bekerja untuk saya baik pada emulator API 18. Dari artikel yang ditautkan tentang appcompat: "Pada platform lama, AppCompat mengemulasi tema warna jika memungkinkan. Saat ini ini terbatas pada pewarnaan action bar dan beberapa widget."
Adam Johns

12
Bagaimana dengan mengubah warna font di bilah status? Dokter tidak mengatakan apa-apa tentang itu.
Scott Biggs

Saya mencoba dengan cara yang sama. ini berfungsi dengan baik di sebagian besar semua perangkat, tetapi saya memiliki samsung galaxy s4 yang menjalankan OS 5.0.1 dan dalam bilah status ponsel ini warnanya hitam. Dan begitu saya pergi ke aktivitas lain dan kembali lagi ke aktivitas sebelumnya, warna bilah status saya diubah menjadi warna tema aplikasi. Alasan mengapa ini terjadi
Hitesh Kamani

364

Memperbarui:

Lollipop:

public abstract void setStatusBarColor (int color)

Ditambahkan dalam API level 21

Android Lollipop menghadirkan kemampuan untuk mengubah warna bilah status di aplikasi Anda untuk pengalaman pengguna yang lebih mendalam dan selaras dengan Google Material Design Guidelines.

Inilah cara Anda dapat mengubah warna bilah status menggunakan window.setStatusBarColormetode baru yang diperkenalkan API level 21.

Mengubah warna bilah status juga memerlukan pengaturan dua bendera tambahan pada Jendela; Anda perlu menambahkan FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDSbendera dan menghapus FLAG_TRANSLUCENT_STATUSbendera.

Kode Kerja:

import android.view.Window;

...

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

Referensi pengembang resmi: setStatusBarColor (int)

Contoh: bahan-desain-di mana-mana

Chris Banes Blog- appcompat v21: desain material untuk perangkat pra-Lollipop!

masukkan deskripsi gambar di sini

Untuk transitionNamelatar belakang tampilan akan android:status:background.


2
Ada solusi untuk kompatibilitas mundur?
Adam Hurwitz

Seperti disebutkan dalam jawaban oleh Niels: Anda juga dapat mengonfigurasi warna bilah status melalui tema / gaya dengan mengatur file android:statusBarColorAnda values-v21/styles.xmlper androiddocs.com/training/material/theme.html seperti itu<item name="android:statusBarColor">@color/primary_color</item>
JL West

4
saya dapat mengubah warna bilah status menjadi putih, tetapi saya tidak dapat melihat ikon pemberitahuan seperti batery, bagaimana saya bisa menyelesaikannya?
MNFS

1
Anda tidak tahu seberapa besar Anda hanya membantu saya ..
Abhishek Dhyani

222

Tempatkan ini adalah values-v21 / styles.xml Anda, untuk mengaktifkannya di Lollipop:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>

34
ini membutuhkan min API 21
Roman

49
Ini mungkin sebabnya dia menyarankan untuk memasukkannya ke dalam values-v21 / styles.xml ;-) Tampaknya ini jawaban yang paling akurat !!
Levite

Tapi ini masih memberi peringatan !!?
Nihal Sharma

apa fungsi untuk compat? status bar
blackHawk

Anda dapat menambahkan targeApiatribut jika Anda ingin mempertahankan file gaya tunggal. Baca jawaban saya untuk referensi stackoverflow.com/a/48565459/4291272
Faisal Shaikh

50

ini cara yang sangat mudah untuk melakukan ini tanpa Library: jika versi OS tidak didukung - di bawah kitkat - jadi tidak ada yang terjadi. saya melakukan langkah-langkah ini:

  1. di xml saya, saya menambahkan ke bagian atas Tampilan ini:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

maka saya membuat metode ini:

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

Anda juga memerlukan kedua metode tersebut untuk mendapatkan tinggi tindakan & status bar:

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

maka satu-satunya yang Anda butuhkan adalah baris ini untuk mengatur warna bilah status:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

1
di mana saya harus meletakkan elemen tampilan? haruskah itu berada di atas tata letak utama?
Emil Reña Enriquez

Iya. Di xml Anda. Di atasnya.
itzhar

Perhatian: Hanya berfungsi untuk android> = 19 API. Dalam kasus saya, saya memerlukan dukungan mulai dari 16
Anton Kizema

setStatusBarColor (findViewById (android.R.id.statusBarBackground), getResources (). getColor (android.R.color.white));
AndroidLad

34

Seperti yang dikatakan @Niels, Anda harus menempatkan pada values-v21 / styles.xml:

<item name="android:statusBarColor">@color/black</item>

Tapi tambahkan tools:targetApi="lollipop" jika Anda ingin styles.xml tunggal, seperti:

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/black</item>

3
Terima kasih banyak untuk "targetApi". Saya tidak suka tema saya tersebar di beberapa file. :)
plexus

31

Yah, solusi Izhar baik-baik saja tetapi, secara pribadi, saya mencoba untuk menghindari kode yang terlihat seperti ini:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};

Juga, saya juga tidak suka menggandakan kode. Dalam jawaban Anda, saya harus menambahkan baris kode tersebut di semua Aktivitas:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

Jadi, saya mengambil solusi Izhar dan menggunakan XML untuk mendapatkan hasil yang sama: Buat tata letak untuk StatusBar status_bar.xml

<View xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="@dimen/statusBarHeight"
     android:background="@color/primaryColorDark"
     android:elevation="@dimen/statusBarElevation">

Perhatikan atribut ketinggian dan ketinggian, ini akan diatur dalam nilai, nilai-v19, nilai-v21 lebih jauh ke bawah.

Tambahkan tata letak ini ke tata letak aktivitas Anda menggunakan include, main_activity.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >

<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout       
</RelativeLayout>

Untuk Bilah Alat, tambahkan atribut margin atas:

<android.support.v7.widget.Toolbar 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="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">

Di appTheme style-v19.xml dan styles-v21.xml Anda, tambahkan windowTranslucent attr:

styles-v19.xml, v21:

<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>

Dan akhirnya, pada dimens Anda, dimens-v19, dimens-v21, tambahkan nilai untuk Toolbar topMargin, dan ketinggian statusBarHeight: dimens.xml kurang dari KitKat:

<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>

Tinggi status bar selalu 24dp dimens-v19.xml untuk KitKat dan di atasnya:

<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>

dimens-v21.xml untuk Lolipop, cukup tambahkan elevasi jika diperlukan:

<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>

Ini adalah hasil untuk Jellybean KitKat dan Lollipop:

masukkan deskripsi gambar di sini


Jadi, alih-alih memasukkan kode cek, Anda memasukkannya ke XML. Solusi Anda akan bekerja pada Kitkat, seperti apa yang dia dapatkan.
Pengembang android

26

Anda dapat menggunakan kode sederhana ini:

Satu kalimat di Kotlin:

window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)

Jawaban asli dengan Java & versi manual periksa:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}

Anda selanjutnya dapat menyederhanakan ini dengan menggunakan ContextCompat. Di Kotlin kemudian hanya ini:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
sunadorer

Pada saat saya menulisnya, saya belum mencoba kotlin. Mengapa Anda tidak mengedit jawaban dan saya dapat menyetujuinya :)
steve moretz

Ide bagus. Saya telah memasukkan saran saya dalam jawaban sebagai referensi mudah bagi pengunjung masa depan
sunadorer

warna bilah status berubah di atas Build.VERSION_CODES.M. tidak bekerja di bawah Lollipop
Muhammed Haris

@MuhammedHaris tidak berhasil. Apakah Anda menggunakan kode kotlin atau java?
steve moretz

23

Cukup buat tema baru di res / values ​​/ styles.xml tempat Anda mengubah "colorPrimaryDark" yang merupakan warna bilah status:

<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/colorGray</item>
</style>

Dan ubah tema aktivitas di AndroidManifest.xml ke yang Anda inginkan, pada aktivitas berikutnya Anda dapat mengubah warna kembali ke yang asli dengan memilih tema aslinya:

<activity
    android:name=".LoginActivity"
    android:theme="@style/AppTheme.GrayStatusBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

Beginilah tampilan res / values ​​/ colors.xml Anda :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#c6d6f0</color>
    <color name="colorGray">#757575</color>
</resources>

1
Saya pikir ini adalah solusi paling sederhana namun terbersih. Tidak perlu memiliki level API minimum 21 , cukup meng-override sederhana. Layak mendapat suara terbanyak.
tahsinRupam

Ini tidak berfungsi ketika berjalan pada level Nougat dan api diatur ke 19. Itu berhasil jika saya mengatur tema android: di bawah node aplikasi di manifes.
AndroidDev

18

Untuk mengubah warna lolipop di atas cukup tambahkan ini ke styles.xml Anda

<item name="android:statusBarColor">@color/statusBarColor</item>

tetapi ingat , jika Anda ingin memiliki warna terang untuk bilah status, tambahkan baris ini juga

<item name="android:windowLightStatusBar">true</item>

1
Terima kasih, itu jawaban yang berguna juga.
Andrew Grow

16

Anda dapat mengubah warna bilah status dengan fungsi ini. bekerja di android L berarti API 21 dan lebih tinggi dan membutuhkan string warna seperti "#ffffff".

private void changeStatusBarColor(String color){
    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.parseColor(color));
    }
}

15

Saya memiliki persyaratan ini: Mengubah secara terprogram warna status bar menjaganya transparan , untuk memungkinkan Navigasi Drawer untuk menggambar dirinya tumpang tindih bilah status trasparent.

Saya tidak bisa melakukan itu menggunakan API

getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)

Jika Anda memeriksa di sini di stack overflow semua orang sebelum baris kode mengatur transparansi bilah status menjadi solid

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

Saya dapat mengelola warna dan transparansi bilah status seperti ini:

  • Android 4: tidak banyak yang dapat Anda lakukan, karena Anda tidak dapat mengelola warna bilah status dari API ... satu-satunya hal yang dapat Anda lakukan adalah mengatur bilah status sebagai tembus dan memindahkan elemen berwarna UI Anda di bawah status batang. Untuk melakukan ini, Anda harus bermain

    android:fitsSystemWindows="false"

    dalam tata letak utama Anda. Ini memungkinkan Anda untuk menggambar tata letak Anda di bawah bilah status. Maka Anda perlu bermain dengan beberapa bantalan dengan bagian atas tata letak utama Anda.

  • Android 5 dan di atasnya: Anda harus mendefinisikan gaya dengan

    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>

    ini memungkinkan laci navigasi untuk tumpang tindih bilah status.

    Kemudian untuk mengubah warna menjaga bilah status transparan Anda harus mengatur warna bilah status dengan

    drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))

    di mana drawerLayout didefinisikan seperti ini

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

Itu bekerja untuk saya tanpa <item name="android:windowDrawsSystemBarBackgrounds">true</item>. Bagaimanapun, setelah pencarian selama berhari-hari, saya menemukan sesuatu yang benar-benar berfungsi (hanya diuji pada Lolllipop untuk saat ini). Terima kasih
DenisGL

saya mengalami masalah yang sama dan jawaban Anda membantu saya untuk menyelesaikan ini.
A.Gun

7

Edit colorPrimary di colors.xml dalam Values ​​ke warna yang Anda inginkan menjadi Status Bar. Sebagai contoh:

   <resources>
<color name="colorPrimary">#800000</color> // changes the status bar color to Burgundy
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>


7

Untuk Mengubah warna bilah status, buka res/values-v21/styles.xmldan warna bilah status

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">#0000FF</item>
    </style>
</resources>

Hei, bisakah kamu membantu saya? Saya tidak tahu tentang Android dan saya tidak bisa mulai belajar sekarang. Saya memiliki penyihir aplikasi sederhana yang menjalankan file html. Saya ingin sekali mengubah warna bilah status karena bagian atas dan bawah pada # 000 itu mengerikan bagi palete saya. Tapi saya tidak bisa, saya bahkan tidak bisa menemukan file styles.xml ... Jika saya bisa mengirimkan apk saya dan Anda mengaturnya untuk saya, saya akan sangat berterima kasih fckng!
Thiago Soubra

6

Jika Anda ingin mengubah warna bilah status secara terprogram (dan asalkan perangkat memiliki Android 5.0). Ini adalah cara sederhana untuk mengubah statusBarColor dari Kegiatan apa pun dan metode yang sangat mudah ketika fragmen yang berbeda memiliki warna bilah status yang berbeda.

 /**
 * @param colorId id of color
 * @param isStatusBarFontDark Light or Dark color
 */
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = ContextCompat.getColor(this, colorId)
        setSystemBarTheme(isStatusBarFontDark)
    }
}

/** Changes the System Bar Theme.  */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
    // Fetch the current flags.
    val lFlags = window.decorView.systemUiVisibility
    // Update the SystemUiVisibility depending on whether we want a Light or Dark theme.
    window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

5

Jika Anda ingin bekerja di Android 4.4 dan di atasnya, coba ini. Saya merujuk pada jawaban Harpreet dan tautan ini. Android dan bilah status transparan

Pertama, panggil metode setStatusBarColored dalam metode onCreate Activity (saya letakkan di kelas util). Saya menggunakan gambar di sini, Anda dapat mengubahnya untuk menggunakan warna.

public static void setStatusBarColored(Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        Window w = context.getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        int statusBarHeight = getStatusBarHeight(context);

        View view = new View(context);
        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        view.getLayoutParams().height = statusBarHeight;
        ((ViewGroup) w.getDecorView()).addView(view);
        view.setBackground(context.getResources().getDrawable(R.drawable.navibg));
    }
}

public static int getStatusBarHeight(Activity context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

Sebelum: sebelum

Setelah: setelah

Warna bilah status telah diubah, tetapi bilah navi terpotong, jadi kita perlu mengatur margin atau offset bilah navi dalam metode onCreate.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height)));
        layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0);

        this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams);
    }

Maka bilah status akan terlihat seperti ini.

status bar


4

Inilah yang bekerja untuk saya di KitKat dan dengan hasil yang baik.

public static void setTaskBarColored(Activity context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            Window w = context.getWindow();
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //status bar height
            int statusBarHeight = Utilities.getStatusBarHeight(context);

            View view = new View(context);
            view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            view.getLayoutParams().height = statusBarHeight;
            ((ViewGroup) w.getDecorView()).addView(view);
            view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
        }
    }

2

Satu lagi solusi:

final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);

Apakah ini akan berfungsi pada tablet di mana bilah status di bagian bawah layar?
guy.gc

6
ada apa 'dan' UiUtil 'di sini?
Manav Patadia

2

ubah colorPrimaryDark ke warna keinginan Anda menjadi file res / values ​​/ styles.xml

    <resources>
        <color name="colorPrimary">#800000</color>
        <color name="colorPrimaryDark">#303F9F</color> //This Line
        <color name="colorAccent">#FF4081</color>
        <color name="red">#FF0000</color>
        <color name="white">#FFFFFF</color>
       <color name="cream">#fffdd0</color>
       <color name="burgundy">#800000</color>
    </resources>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.