2015-05-26 12 views
14

Ich versuche, die Statusleiste Textfarbe in Android V21 zu setzen, aber ich sehe keine API-Methode für sie. Hier ist, was ich bisher für den HintergrundAndroid Lollipop Set Statusleiste Textfarbe

MyActivity.java> onCreate:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     Window window = getWindow(); 
     window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

     window.setStatusBarColor(getResources().getColor(R.color.white)); 

    } 

Offensichtlich weißer Text auf weißen Hintergrund wird nicht funktionieren. Ich bin auf der Suche nach so etwas wie

window.setStatusBarTextColor(getResources().getColor(R.color.orange)); 
+0

Ich glaube nicht, gibt es keine Methode, wie setStatusBarTextColor in Android 5.0 –

+0

Im Gegensatz Forum-Sites, wissen wir nicht „Danke“ verwenden oder „jede Hilfe dankbar“, oder Unterschriften auf [so]. Siehe "[Sollen 'Hallo', 'Danke', 'Slogans' und 'Anrede' aus Posts entfernt werden?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) –

+0

Es ist nicht möglich, die Statusfarbe der Lollipop-Statusleiste zu ändern.Sie können den Hintergrund der Statusleiste als transluzent festlegen, was zu einem Hintergrund von # 4000 führt, der eine ausreichende Lesbarkeit garantiert oder Sie manuell auf eine bestimmte Farbe einstellen (Hinweis: primär) dark, keyword * dark *), das genug Kontrast zum weißen Vordergrund garantiert.Wir können nun die Farbe manuell von Schwarz oder was auch immer zufälliges Zeichen, das Samsung verwendet, ändern, ist das nicht genug? –

Antwort

0

Android 5.0

können wir nur Statusleiste Farbe nicht Statusleiste Textfarbe ändern.

gibt es keine Methode, wie

setStatusBarTextColor(getResources().getColor(R.color.orange)); 

Kurz gesagt, es ist nicht möglich, auf Android 5.0. Sehen Sie sich diese answer

+0

Es ist möglich von API 23 und höher, überprüfen Sie die Antwort von Sunita –

26

Sie können die Statusleiste Textfarbe festgelegt durch die farbspezifizierenden ausdrücklich

Aber Sie können unter Alternative versuchen, die 23 in API hinzugefügt wird,

Sie können „android: windowLightStatusBar“ Attribut auf zwei Arten

  • „android: windowLightStatusBar“ = true, Statusleiste Textfarbe wird kompatibel (grau), wenn Statusleiste Farblicht ist
  • "android: windowLightStatusBar" = false, Statusleiste Textfarbe wird kompatibel (weiß), wenn Statusleiste Farbe ist dunkel
<style name="statusBarStyle" parent="@android:style/Theme.DeviceDefault.Light"> 
     <item name="android:statusBarColor">@color/status_bar_color</item> 
     <item name="android:windowLightStatusBar">false</item> 
</style> 

Sie oben api in untenstehenden Link abrufbar - https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar

+2

Erstaunlich. Ich wusste das nicht. Klappt wunderbar. – Tobliug

4

Sie können dies auch zur Laufzeit tun. Hier ist ein Beispiel für Mono.Android mit dem Flag SystemUiVisibility. Sie müssen einige bitweise Operationen ausführen, um die Flagge zu ändern. Ihre Anwendung muss auf die Ziel-API 23 oder höher gesetzt sein, um mit diesem Flag zu kompilieren.

+0

Vielen Dank für diese Antwort –

5

Hier ist eine Java-Implementierung von Gandalf458 's Antwort.

/** Changes the System Bar Theme. */ 
@RequiresApi(api = Build.VERSION_CODES.M) 
public static final void setSystemBarTheme(final Activity pActivity, final boolean pIsDark) { 
    // Fetch the current flags. 
    final int lFlags = pActivity.getWindow().getDecorView().getSystemUiVisibility(); 
    // Update the SystemUiVisibility dependening on whether we want a Light or Dark theme. 
    pActivity.getWindow().getDecorView().setSystemUiVisibility(pIsDark ? (lFlags & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) : (lFlags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)); 
}