Android'de durum çubuğu rengini nasıl değiştirebilirim?


427

Her şeyden önce , android durum çubuğunun arka plan rengini değiştirme

Gezinme çubuğundaki ile aynı olması gereken durum çubuğu rengini nasıl değiştirebilirim?

Durum çubuğu renginin gezinme çubuğu rengiyle aynı olmasını istiyorum

resim açıklamasını buraya girin


2
sadece kitkat @MarkBuikema sonra mümkündür
codercat

4
Niels'in öne sürdüğü gibi, v21'den beri bir TEMA ATTRIBUTE var android:statusBarColor. Basitçe ekleyebilirsiniz values-v21/styles.xml.
Levite

@MarkBuikema Bu, root erişimi ile nasıl ilişkilidir?
steve moretz

Yanıtlar:


625

Android 5.0 Lollipop colorPrimaryDark, temanın değerine göre durum çubuğunu otomatik olarak renklendiren Materyal Tasarımı temasını tanıttı .

Bu, 21 sürümünden başlayarak kütüphane desteği-v7-appcompat sayesinde cihaz ön lolipopunda desteklenir. Chris Banes'in destek uygulaması compate v21 hakkında blog yazısı

resim açıklamasını buraya girin

Resmi Android Geliştiricileri web sitesinde Malzeme Teması hakkında daha fazla bilgi edinin


29
nedense colorPrimaryDark özniteliği benim için çalışmıyor. emulator v21 üzerinde çalıştı
sapkın

3
Emülatördeki değişiklikleri düzen önizlemesinde
görmemeniz işe yarıyor

6
colorPrimaryDark benim için de API 18 öykünücüsünde çalışmıyor. Appcompat ile ilgili makaleden: "Eski platformlarda, AppCompat mümkün olduğunca renk temasını öykünür. Şu anda bu, işlem çubuğunu ve bazı widget'ları renklendirmekle sınırlıdır."
Adam Johns

12
Durum çubuğundaki yazı tipi rengini değiştirmeye ne dersiniz ? Dokümanlar bu konuda hiçbir şey söylemiyor.
Scott Biggs

Ben de aynı şekilde denedim. tüm cihazların çoğunda mükemmel çalışır, ancak OS 5.0.1 çalıştıran samsung galaxy s4 var ve bu telefonun durum çubuğu rengi siyahtır. Başka bir etkinliğe gidip tekrar önceki etkinliğe geldiğimde durum çubuğu rengim uygulama teması rengine değiştirildi. Bunun olmasının herhangi bir nedeni
Hitesh Kamani

364

Güncelleme:

Lolipop:

public abstract void setStatusBarColor (int color)

API düzey 21'e eklendi

Android Lollipop, daha kapsamlı bir kullanıcı deneyimi için ve Google'la uyumlu olarak uygulamanızdaki durum çubuğunun rengini değiştirme yeteneğini getirdi Material Design Guidelines.

Durum çubuğunun rengini, window.setStatusBarColortanıtılan yeni yöntemi kullanarak nasıl değiştirebileceğiniz aşağıda açıklanmıştır API level 21.

Durum çubuğunun renginin değiştirilmesi, Pencerede iki ek bayrak ayarlanmasını gerektirir; FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDSbayrağı eklemeniz veFLAG_TRANSLUCENT_STATUS .

Çalışma Kodu:

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));

Resmi geliştirici referansı: setStatusBarColor (int)

Misal : malzeme-tasarım-her yerde

Chris Banes Blog- appcompat v21: Lolipop öncesi cihazlar için malzeme tasarımı!

resim açıklamasını buraya girin

transitionNameGörünümü arka plan için olacak android:status:background.


2
Geriye dönük uyumluluk için herhangi bir çözüm var mı?
Adam Hurwitz

Niels tarafından cevap belirtildiği gibi: Ayrıca ayarıyla tema / stil yoluyla durum çubuğu rengini yapılandırabilirsiniz android:statusBarColorsizin de values-v21/styles.xmlbaşına dosyanın androiddocs.com/training/material/theme.html şöyle<item name="android:statusBarColor">@color/primary_color</item>
JL Batı

4
Durum çubuğu rengini beyaz olarak değiştirebilirim, ancak batery gibi bildirim simgesini göremiyorum, nasıl çözebilirim?
MNFS

1
Bana ne kadar yardım ettiğine dair hiçbir fikrin yok.
Abhishek Dhyani

222

Bunu Lollipop'ta etkinleştirmek için-v21 / styles.xml değerlerinize yerleştirin:

<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
bu min API 21 gerektirir
Roman

49
Bu yüzden muhtemelen değerleri-v21 / styles.xml ;-) içine koymayı önerdi, şimdiye kadarki en doğru cevap gibi görünüyor !!
Levite

Ama bu hala bir uyarı işareti !!?
Nihal Sharma

uyumlu işlevi nedir? status bar
blackHawk

targeApitek bir stil dosyasını korumak istiyorsanız nitelik ekleyebilirsiniz . Referans için cevabımı oku stackoverflow.com/a/48565459/4291272
Faisal Shaikh

50

bunu herhangi bir Kütüphane olmadan yapmanın çok kolay bir yoludur: OS sürümü desteklenmiyorsa - kitkat altında - hiçbir şey olmadı. bu adımları yapmak:

  1. benim xml ben bu görünüm üstüne ekledi:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

sonra ben bu yöntemi yaptı:

 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);
     }
}

Ayrıca eylem Bar ve durum çubuğu yüksekliği almak için bu iki yönteme de ihtiyacınız vardır:

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;
}

o zaman ihtiyacınız olan tek şey durum çubuğu rengini ayarlamak için bu satırdır:

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

1
görünüm öğesini nereye koymalıyım? ana mizanpajın üstünde olmalı mı?
Emil Reña Enriquez

Evet. Xml'nizde. Üstünde.
itzhar

Dikkat: Yalnızca android> = 19 API için çalışıyor. Benim durumumda 16'dan başlayarak desteğe ihtiyacım var
Anton Kizema

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

34

@Niels'in söylediği gibi, v21 / styles.xml değerlerine yerleştirmeniz gerekir:

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

Ancak tools:targetApi="lollipop"single styles.xml dosyasını istiyorsanız ekleyin :

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

3
"TargetApi" için çok teşekkür ederiz. Temamın birden fazla dosyaya yayılmasını sevmiyorum. :)
pleksus

31

Peki, Izhar çözümü iyiydi ama, şahsen ben, şöyle görünen koddan kaçınmaya çalışıyorum:

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

Yanı sıra, ben de kodu çoğaltmak istemiyorum. Cevabınızda tüm Faaliyetlere böyle bir kod satırı eklemeliyim:

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

Bu nedenle, Izhar çözümünü aldım ve aynı sonucu elde etmek için XML kullandım: StatusBar için bir düzen oluşturma 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">

Yükseklik ve yükseklik niteliklerine dikkat edin, bunlar değerler, v19, değerler-v21 daha aşağı olarak ayarlanır.

İnclude, main_activity.xml dosyasını kullanarak bu düzeni etkinlik düzeninize ekleyin:

<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>

Araç Çubuğu için üst kenar boşluğu özelliği ekleyin:

<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">

AppTheme style-v19.xml ve styles-v21.xml dosyasında windowTranslucent attr öğesini ekleyin:

stiller-v19.xml, v21:

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

Ve son olarak, boyutlarınızda, dimens-v19, dimens-v21, Araç Çubuğu topMargin değerlerini ve KitKat'tan daha düşük bir değer için statusBarHeight: dimens.xml değerini ekleyin:

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

KitKat ve üstü için durum çubuğu yüksekliği her zaman 24dp dimens-v19.xml'dir:

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

Lolipop için dimens-v21.xml, gerekirse yüksekliği ekleyin:

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

Bu Jellybean KitKat ve Lollipop'un sonucudur:

resim açıklamasını buraya girin


Bu nedenle, check-in kodunu koymak yerine XML'e koydunuz. Siz çözüm Kitkat üzerinde çalışacak, tıpkı sahip olduğu gibi.
android geliştirici

26

Bu basit kodu kullanabilirsiniz:

Kotlin'de bir astar:

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

Java ve manuel sürüm kontrolü ile orijinal cevap:

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));
}

Düğmesini kullanarak bunu daha da basitleştirebilirsiniz ContextCompat. window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Kotlin'de

Yazdığım zaman kotlin'i denememiştim.Neden cevabı düzenlemiyorsunuz ve onaylayabiliyorum :)
steve moretz

İyi bir fikir.
Önerime

durum çubuğu rengi Build.VERSION_CODES.M öğesinin üstünde değişti. Lollipop'un altında çalışmıyor
Muhammed Haris

@MuhammedHaris işe yarıyor. Kotlin veya java kodunu kullandınız mı?
steve moretz

23

Durum çubuğunun rengi olan "colorPrimaryDark" ı değiştirdiğiniz res / valu / styles.xml dosyasında yeni bir tema oluşturmanız yeterlidir :

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

AndroidManifest.xml'deki etkinlik temasını istediğiniz temaya değiştirin, bir sonraki etkinlikte orijinal temayı seçerek rengi orijinaline geri döndürebilirsiniz:

<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>

Bu nasıl res / değerler / colors.xml gibi görünmelidir:

<?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
Bence bu en basit ama en temiz çözüm. Minimum 21 API seviyesine sahip olmanıza gerek yok , sadece basit geçersiz kılma. Daha fazla oyu hak ediyor.
tahsinRupam

Nougat ve api düzeyinde 19 olarak ayarlandığında bu işe yaramadı. Manifestteki uygulama düğümü altında android: temayı ayarladıysam işe yaradı.
AndroidDev

18

Yukarıdaki lolipopun rengini değiştirmek için bunu stillerinize ekleyin. Xml

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

ancak , durum çubuğu için açık bir renk istiyorsanız, bu satırı da ekleyin

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

1
Teşekkürler, bu da yararlı bir yanıt.
Andrew Grow

16

Durum çubuğu rengini bu işlevle değiştirebilirsiniz. android L üzerinde çalışır API 21 ve üstü anlamına gelir ve gibi bir renk dizesi gerekir "#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

Bu gereksinimim vardı: Gezinme Çekmecesinin şeffaf olmayan durum çubuğuyla örtüşen kendisini çizmesine izin vermek için durum çubuğu rengini programlı olarak değiştirmek .

API kullanarak bunu yapamam

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

Yığın taşmasında burada bu kod satırından önce herkesi kontrol ederseniz, durum çubuğunun şeffaflığını

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

Durum çubuğunun rengini ve şeffaflığını şu şekilde yönetebiliyorum :

  • Android 4: Yapabileceğiniz çok şey yok, çünkü API'den durum çubuğu rengini yönetemezsiniz ... yapabileceğiniz tek şey durum çubuğunu yarı saydam olarak ayarlamak ve kullanıcı arayüzünüzün renkli bir öğesini durumun altına taşımaktır bar. Bunu yapmak için

    android:fitsSystemWindows="false"

    ana düzeninizde. Bu durum çubuğunu durum çubuğunun altına çizmenizi sağlar. O zaman ana düzeninizin üst kısmı ile bazı dolgularla oynamanız gerekir.

  • Android 5 ve üstü: ile bir stil tanımlamanız gerekir

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

    bu, gezinme çekmecesinin durum çubuğuyla çakışmasını sağlar.

    Ardından durum çubuğunu şeffaf tutan rengi değiştirmek için durum çubuğu rengini

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

    Burada drawerLayout bu şekilde tanımlanır

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

O olmadan benim için çalıştı <item name="android:windowDrawsSystemBarBackgrounds">true</item>. Her neyse, arama günlerinden sonra, gerçekten işe yarayan bir şey buldum (şimdilik sadece Lolllipop'ta test edildi). Teşekkürler
DenisGL

aynı sorunu yaşıyordum ve cevabınız bunu çözmeme yardımcı oldu.
A.Gun

7

Durum Çubuğu'nun olmasını istediğiniz renge ilişkin değerler bölümündeki colors.xml'deki colorPrimary öğesini düzenleyin. Örneğin:

   <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

Durum çubuğunun rengini değiştirmek için durum çubuğunun res/values-v21/styles.xmlrengine ve rengine gidin

<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>

Hey, bana yardım edebilir misin? Android hakkında hiçbir fikrim yok ve şimdi öğrenmeye başlayamıyorum. Basit bir uygulama cadı bir html dosyası çalışır. Durum çubuğu rengini değiştirmek için ölüyorum çünkü # 000 üzerindeki üst ve alt paletim için korkunç. Ama bulamıyorum, styles.xml dosyasını bile bulamıyorum ... Size apk'imi gönderebilirsem ve bana ayarlarsan minnettar olacağım!
Thiago Soubra

6

Durum çubuğu rengini programlı olarak değiştirmek istiyorsanız (ve cihazın Android 5.0'a sahip olması koşuluyla). Bu, statusBarColor'u herhangi bir Etkinlikten değiştirmenin basit bir yoludur ve farklı parçalar farklı durum çubuğu rengine sahip olduğunda çok kolay yöntemler .

 /**
 * @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

Android 4.4 ve üstü sürümlerde çalışmak istiyorsanız bunu deneyin. Harpreet'un cevabına ve bu bağlantıya değiniyorum. Android ve şeffaf durum çubuğu

İlk olarak, Activity's onCreate yönteminde setStatusBarColored yöntemini çağırın (bunu bir util sınıfına koydum). Burada bir görüntü kullanıyorum, bir renk kullanmak için değiştirebilirsiniz.

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;
}

Önce: önce

Sonra: sonra

Durum çubuğunun rengi değiştirildi, ancak navi çubuğu kesildi, bu yüzden onCreate yönteminde navi çubuğunun kenar boşluğunu veya ofsetini ayarlamamız gerekiyor.

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);
    }

Durum çubuğu böyle görünecektir.

durum çubuğu


4

KitKat'ta benim için iyi sonuç verdi.

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

Bir çözüm daha:

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);

Durum çubuğunun ekranın altında olduğu tabletlerde çalışır mı?
guy.gc

6
burada 'w' ve 'UiUtil' nedir?
Manav Patadia

2

değiştirmek colorPrimaryDark res / değerler / styles.xml dosya halinde arzu rengine

    <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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.