Android: La barra de estado es blanca

Por alguna razón, la barra de estado ahora es blanca. O más bien, un blanco apagado, con otra sombra de blanco para los iconos débilmente visibles contra el fondo brillante. Cuál es incorrecto, porque mi appbarlayout utiliza una cortina azul como su color. Hasta ahora, esto ha estado funcionando bien, no sé lo que hice para causar esto. He intentado establecer manualmente el statusBarColor a colorPrimaryDark (# 0277bd), pero no funciona.

Simplemente no sé por qué está sucediendo esto en primer lugar. Estoy pegando el layout.xml de mi actividad, tal vez alguien me puede dar cuenta de lo que estoy haciendo mal aquí.

Algunas notas:

Los temas utilizados no han cambiado de sus valores predeterminados, que son utilizar la configuración de color primaria. Los cambié a la sombra correcta de azul que quería, pero cuando hice ese cambio todo estaba funcionando.

Mi layout.xml

<?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:statusBarColor="@color/colorPrimaryDark" tools:context=".activities.ContactsActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/contactsActivityAppbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:statusBarColor="@color/colorPrimaryDark" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/contactsActivityToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupOverlay"/> <!-- app:layout_scrollFlags="scroll|enterAlways" --> <android.support.design.widget.TabLayout android:id="@+id/contactsActivityTabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@android:color/white" android:scrollbarStyle="insideOverlay" android:paddingBottom="1dp" android:background="@color/colorPrimary"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/contactsTabsViewPager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> 

Colors.xml

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#0288d1</color> <color name="colorPrimaryDark">#0277bd</color> <color name="colorAccent">#FF4081</color> </resources> 

Styles.xml

 <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"> <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" /> </resources> 

Edit: Ok, encontró una solución interesante, realmente quiero entenderlo, no sólo confiar en él. Además, puede que no sea la mejor respuesta a largo plazo.

De todos modos, al tema de aplicación base (AppTheme) en styles.xml, agregué la siguiente línea:

 <item name="android:windowBackground">@color/colorPrimaryDark</item> 

Funcionó, hizo que el fondo de todo lo que no específicamente asignar un color de ese color. Pero también hizo que la barra de estado que el color, por lo que pasó y agregó mis propios antecedentes a otras cosas para solucionarlos.

Sin embargo, siento que esta no es la solución ideal, y me gustaría más comentarios en general. Además, incluso sin esta línea antes, estaba coloreando la barra de estado muy bien. No tengo ni idea de lo que hice para romperlo en primer lugar.

Gracias.

Editar: Aquí está el código de actividad. Gracias.

 import android.content.Intent; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import io.craigmiller160.contacts5.R; import io.craigmiller160.contacts5.fragments.ContactsGroupsFragmentPage; import io.craigmiller160.contacts5.fragments.ContactsListFragmentPage; import io.craigmiller160.contacts5.fragments.ContactsTabsPagerAdapter; public class ContactsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contacts); Toolbar toolbar = (Toolbar) findViewById(R.id.contactsActivityToolbar); setSupportActionBar(toolbar); ViewPager viewPager = (ViewPager) findViewById(R.id.contactsTabsViewPager); ContactsTabsPagerAdapter adapter = new ContactsTabsPagerAdapter(getSupportFragmentManager()); adapter.addFragmentPage(new ContactsListFragmentPage(), "Contacts"); adapter.addFragmentPage(new ContactsGroupsFragmentPage(), "Groups"); viewPager.setAdapter(adapter); TabLayout tabLayout = (TabLayout) findViewById(R.id.contactsActivityTabs); tabLayout.setupWithViewPager(viewPager); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.displaySettings) { Intent intent = new Intent(this, DisplaySettingsActivity.class); startActivity(intent); return true; } return super.onOptionsItemSelected(item); } } 

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

Verá esa línea de código en values/styles/styles.xml(v21) . Eliminar y que resuelve el problema

Usted puede lograr por esto. Vaya a su style.xml (v21) y simplemente cambie el color

  <item name="android:statusBarColor">@color/colorPrimary</item> 

Espero que esto solucione su problema.

Pruebe esto como su XML.

 <?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.ContactsActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/contactsActivityAppbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/contactsActivityToolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> <android.support.design.widget.TabLayout android:id="@+id/contactsActivityTabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@android:color/white" android:scrollbarStyle="insideOverlay" android:paddingBottom="1dp" android:background="?attr/colorPrimary"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/contactsTabsViewPager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> 

Creo que puede haber establecido el tema varias veces y su confusión en sí.

Si todo está bien hecho, la barra de Status obtendrá su color de colorPrimaryDark .

Tuve este problema exacto. Lo arreglé cambiando el tema de la aplicación para extender el estilo NoActionBar AppCompat:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:windowBackground">@color/alabaster</item> </style> 

El diseño de mi actividad es:

 <?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" tools:ignore="MergeRootFrame"> <android.widget.RelativeLayout android:id="@+id/chat_container" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/AppTheme.PopupOverlay"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> 

Donde el RelativeLayout contiene un fragmento que sólo tiene un RecyclerView dentro de un RelativeLayout. Así que elimine el android: statusBarColor = "@ color / colorPrimaryDark" y fitSystemWindow xml líneas y cambiar su tema y creo que debería funcionar.

No puedo decir que he examinado esto en gran detalle, pero ninguna de las otras respuestas han sugerido "windowDrawsSystemBarBackgrounds" – que parece funcionar sin necesidad de establecer los colores de la barra de estado explícitamente. Por lo tanto, v21 / styles.xml:

<resources> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item> </style> </resources>

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.