Android Lollipop Establecer color de texto de la barra de estado

Resuelto Kristof asked hace 54 años • 8 respuestas

Estoy intentando configurar el color del texto de la barra de estado en Android v21, pero no veo un método API para ello. Esto es lo que tengo hasta ahora como fondo.

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

    }

Obviamente, el texto blanco sobre fondo blanco no funcionará. estoy buscando algo como

window.setStatusBarTextColor(getResources().getColor(R.color.orange));
Kristof avatar Jan 01 '70 08:01 Kristof
Aceptado

No puede configurar el color del texto de la barra de estado especificando ningún color explícitamente

Pero puedes probar la siguiente alternativa que se agrega en API 23,

Puede utilizar el atributo "android:windowLightStatusBar" de dos maneras

  • "android:windowLightStatusBar" = true, el color del texto de la barra de estado será compatible (gris) cuando el color de la barra de estado sea claro
  • "android:windowLightStatusBar" = false, el color del texto de la barra de estado será compatible (blanco) cuando el color de la barra de estado sea oscuro
<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>

Puede consultar la API anterior en el siguiente enlace: https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar

Sunita avatar Nov 03 '2015 21:11 Sunita

Aquí hay una implementación Java de la respuesta de Gandalf458 .

/** 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));
}
Mapsy avatar Apr 27 '2017 15:04 Mapsy