Chcę zmienić kolor paska stanu mojej aplikacji, aby był biały z czarnymi ikonami (zamiast domyślnego czarnego z białymi ikonami). Czy jest na to sposób?
Chcę zmienić kolor paska stanu mojej aplikacji, aby był biały z czarnymi ikonami (zamiast domyślnego czarnego z białymi ikonami). Czy jest na to sposób?
Odpowiedzi:
Dzięki Androidowi M (poziom api 23) możesz to osiągnąć z motywu z android:windowLightStatusBar
atrybutem.
Edytować :
Tak jak wspomniał Pdroid, można to również osiągnąć programowo:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Możliwe jest stworzenie białego paska statusu z szarymi ikonami np. W ten sposób dla SDK> = 23 (zobacz dokumentację ):
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
w pliku styles.xml i ustaw colorPrimary
biały lub programowo:
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
ale @being_sohelkhan z jakiegoś powodu został stworzony mój oryginalny odpowiedź ... stackoverflow.com/posts/46897243/revisions
Właśnie dodałem do mojej aktywności na Kotlinie:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
po prostu dodaj to do swojego stylu
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
ustaw android: windowDrawsSystemBarBackgrounds na true * . To jest flaga, której opis znajduje się poniżej:
Flaga wskazująca, czy to okno jest odpowiedzialne za rysowanie tła dla słupków systemowych. Jeśli prawda, a okno nie jest ruchome, paski systemowe są rysowane z przezroczystym tłem, a odpowiednie obszary w tym oknie są wypełnione kolorami określonymi w {@link android.R.attr # statusBarColor} i {@link android.R .attr # navigationBarColor}. Odpowiada {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}.
Możesz to wykorzystać w Kotlinie
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Pamiętaj, aby zadzwonić onCreate()
wcześniejsetContentView()
Nie ma takiej drogi, chyba że masz kontrolę nad całym ROMem, aby dostosować to ręcznie. Sugeruję, abyś użył jasnoszarego koloru paska stanu w swoim motywie, tak jak robi to dysk Google.
Edycja: zapoznaj się z odpowiedzią @Wrekcker, ponieważ zmieniło się to w systemie Android M.
Właśnie tego użyłem
parent="Theme.AppCompat.Light.NoActionBar"
app:theme="@style/AppThemeWithoutActionBarwithwhitehed"
android:background="#fff"
Miałem ten sam problem.
Zauważyłem, że kiedy używam normalnego układu, takiego jak RelativeLayout, to nie działa. Ale kiedy przeszedłem na tę bibliotekę wsparcia, taką jak CordinatorLayout, w końcu zaczęło działać. Spróbuj tego.
<?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>
<********* PONIŻEJ INNYCH ATRYBUTÓW ************>
style
<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" />
I w manifeście
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>