In einer meiner Aktivitäten habe ich die Farbe der Symbolleiste mit geändert Palette
. Aber auf 5,0 Geräte mit ActionBarActivity
der status bar
Farbe ist die Farbe meiner colorPrimaryDark
in meiner Tätigkeit Thema so habe ich zwei sehr verschiedenen Farben und es sieht nicht gut aus.
Mir ist klar, dass Sie in 5.0 verwenden können, dies Window.setStatusBarColor()
aber ActionBarActivity
nicht haben.
Meine Frage ist also in 5.0. Wie kann ich die Farbe der Statusleiste ändern ActionBarActivity
?
Antworten:
Ich bin mir nicht sicher, ob ich das Problem verstehe.
Wenn Sie die Farbe der Statusleiste programmgesteuert ändern möchten (und vorausgesetzt, das Gerät verfügt über Android 5.0), können Sie sie verwenden
Window.setStatusBarColor()
. Es sollte keinen Unterschied machen, ob die Aktivität vonActivity
oder abgeleitet istActionBarActivity
.Versuchen Sie es einfach:
Habe das gerade mit getestet
ActionBarActivity
und es funktioniert in Ordnung.Hinweis: Das
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
programmgesteuerte Setzen des Flags ist nicht erforderlich, wenn Ihrevalues-v21
Stildatei es bereits gesetzt hat:quelle
getWindow()
minSdkVersion
und / odertargetSdkVersion
Attribute für das<uses-sdk ...>
Element) haben.Es gibt verschiedene Möglichkeiten, die Farbe der Statusleiste zu ändern.
1) Verwenden Sie die Datei styles.xml. Sie können das Attribut android: statusBarColor verwenden, um dies auf einfache, aber statische Weise zu tun.
Hinweis: Sie können dieses Attribut auch mit dem Material-Thema verwenden.
2) Sie können dies dynamisch mit der Methode setStatusBarColor (int) in der Window-Klasse ausführen. Beachten Sie jedoch, dass diese Methode nur für API 21 oder höher verfügbar ist. Überprüfen Sie dies also unbedingt, da Ihre App sonst auf niedrigeren Geräten abstürzt.
Hier ist ein Arbeitsbeispiel für diese Methode.
Dabei ist primaryDark die 700-Tönung der Primärfarbe, die ich in meiner App verwende. Sie können diese Farbe in der Datei colours.xml definieren.
Probieren Sie es aus und lassen Sie mich wissen, wenn Sie Fragen haben. Ich hoffe es hilft.
quelle
clearFlags
mein Problem hinzuIch glaube nicht, dass die Farbe der Statusleiste in AppCompat implementiert wurde. Dies sind die Attribute, die verfügbar sind:
(Aus \ sdk \ extras \ android \ support \ v7 \ appcompat \ res \ values \ attrs.xml )
quelle
Versuchen Sie dies, ich habe dies verwendet und es funktioniert sehr gut mit v21.
quelle
Vielen Dank für die obigen Antworten, mit deren Hilfe nach bestimmten F & E für xamarin.android MVVMCross-Anwendung unten funktioniert hat
Flag, das für die Aktivität in der Methode OnCreate angegeben wurde
Für jede MvxActivity wird das Thema wie folgt erwähnt
Meine SplashStyle.xml sieht wie folgt aus
Und ich habe V7 Appcompact verwiesen.
quelle
[Kotlin-Version] Ich habe diese Erweiterung erstellt, die auch prüft, ob die gewünschte Farbe genügend Kontrast hat, um die System-Benutzeroberfläche auszublenden, z. B. das Batteriestatus-Symbol, die Uhr usw., sodass wir die System-Benutzeroberfläche entsprechend weiß oder schwarz einstellen.
quelle
Bewirbt sich
in
Theme.AppCompat.Light.DarkActionBar
hat bei mir nicht funktioniert. Was der Trick getan hat, ist,colorPrimaryDark
wie gewohnt zusammen mitandroid:colorPrimary
in styles.xml zu gebenund in der Einstellung
musste die Farbe der Statusleiste im Code nicht einstellen.
quelle