Durum çubuğunu siyah simgelerle nasıl beyaz yapabilirim?


86

Uygulamamın durum çubuğunun rengini, siyah simgelerle beyaz olacak şekilde değiştirmek istiyorum (varsayılan beyaz simgeli siyah yerine). Bunu yapmanın bir yolu var mı?


Varsayılan temanızı değiştirin
Rohit5k2

Bildirim çubuğu simgelerini siyaha çevirecek temayı hangi temaya değiştirmeliyim?
Jon

Özel tema kullanın. Başlangıç ​​için stackoverflow.com/questions/8024706/…
adresini ziyaret edin

Peki ya android yönergelerini izleyen ve beyaz bildirim simgeleri olan uygulamalara ne dersiniz? Kullanıcının uygulamanızda olduklarında bunları görmesini nasıl beklersiniz?
tyczj

2
ancak diğer uygulama kaynaklarının rengini değiştiremezsiniz, aslında lolipop ne olursa olsun tüm simgeleri beyaz yapar
tyczj

Yanıtlar:


129

Android M (api seviyesi 23) ile bunu android:windowLightStatusBarözniteliğe sahip temadan elde edebilirsiniz .

Düzenle :

Pdroid'in de belirttiği gibi, bu aynı zamanda programlı olarak da gerçekleştirilebilir:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 

2
bunu programlı olarak ayarlayabilir miyim?
busylee

@busylee Sanırım temanızın bir alt öğesini oluşturabilir ve orada değiştirebilir ve activity.getTheme.setTo (Tema başka) ile uygulayabilirsiniz
bugraoral

Merhaba @wrecker, uygulama bildirim simgemle aynı sorunu yaşıyorum. Temamda android: windowLightStatusBar = true ekledim ve Android M'de test ediyorum ancak temayı bir üçüncü taraf başlatıcı uygulaması (Nova Launcher) kullanarak değiştirdiğimde beyaz bildirim simgesi griye dönmüyor. Mümkün olan tüm yolları denedim ama henüz düzeltemedim. Bana yardım edebilirsen minnettar olurum.
Sujit

1
@busylee Evet, aşağıdaki yöntemi kullanarak istediğiniz zaman ayarlayabilirsiniz: View.setSystemUiVisibility (View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); Bu cevap eklenmelidir
Pdroid

6
22 veya önceki sürümlerde kullanmak istersem ne olur?
Dhara Patel

46

Beyaz durum çubuğunu gri simgelerle yapmak mümkündür, örneğin SDK> = 23 için bu şekilde ( dokümanlara bakın ):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowLightStatusBar">true</item>
</style>

styles.xml dosyanızda ve colorPrimarybeyaza veya programlı olarak ayarlayın:

getWindow().setStatusBarColor(Color.WHITE);

2
21 değil, API 23'te eklendi - bkz. Belgeler
Vadim Kotov

hey @VadimKotov aslında yazdım SDK >= 23ama @being_sohelkhan nedense orijinal cevabımı düzenledi ... stackoverflow.com/posts/46897243/revisions
Rammgarot

16

Kotlin'deki etkinliğime yeni eklendi:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                window.statusBarColor = Color.WHITE
            }

7

sadece bunu tarzına ekle

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

seti android: windowDrawsSystemBarBackgrounds için gerçek * . Bu, açıklaması aşağıda verilen bir bayraktır:

Bu Pencerenin sistem çubuklarının arka planını çizmekten sorumlu olup olmadığını gösteren bayrak. True ise ve pencere kayan değilse, sistem çubukları şeffaf bir arka planla çizilir ve bu penceredeki ilgili alanlar {@link android.R.attr # statusBarColor} ve {@link android.R'de belirtilen renklerle doldurulur. .attr # navigationBarColor}. {@Link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS} 'a karşılık gelir.


2

Kotlin'de bu şekilde kullanabilirsiniz

 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

Daha onCreate()önce aradığınızdan emin olun.setContentView()


0

Bunu manuel olarak özelleştirmek için tüm rom üzerinde bir kontrole sahip değilseniz, bunun böyle bir yolu yoktur. Yapmanızı önerdiğim şey, google sürücüsünün yaptığı gibi temanız aracılığıyla durum çubuğu rengi için açık gri bir renk kullanmaktır.

Düzenleme: Lütfen android M'de değiştiği için @Wrekcker yanıtına bakın.


1
Android M
Amir Dora'da

0

Sadece bunu kullandım

  1. Ebeveynin stilini ayarlayın
parent="Theme.AppCompat.Light.NoActionBar"
  1. Bunu xml'deki menü çubuğuna ekleyin
  app:theme="@style/AppThemeWithoutActionBarwithwhitehed"       
  android:background="#fff"

-1

Ben de aynı sorunu yaşadım.

RelativeLayout gibi normal bir düzen kullandığımda işe yaramadığını fark ettim. Ama buna CordinatorLayout gibi destek kitaplığından geldiğimde nihayet çalışmaya başladı. Bunu dene.

  <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".Activities.Activity">


        <android.support.v7.widget.Toolbar
            android:id="@+id/tb_activity"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />


    </android.support.design.widget.CoordinatorLayout>

<********* DİĞER ÖZELLİKLERİN ALTINDA ************>

stilleri

<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" parent="AppTheme">
    <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" />

Ve tezahürde

<activity
            android:name=".Activities.MyActivity"
            android:label="Activity"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>
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.