La barra de estado no es transparente, pero es blanca

Para probar kotlin con anko DSL, decidí comenzar un nuevo proyecto en el último android studio ide (2.1.3), usando el plugin de kotlin (1.0.3) y la última biblioteca de anko (0.9)

Usé la actividad de cajón de navigation del proyecto pnetworkingeterminado, así que solo tuve que convertir el xml principal en anko.

Este es el xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <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.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" 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:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <TextView android:text="Hello World!" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> 

Y está funcionando perfectamente, como puedes ver aquí: [xml]

Con anko, traté de copyr cada detalle del xml, obteniendo este código:

 class MainActivityUi: AnkoComponent<MainActivity> { override fun createView(ui: AnkoContext<MainActivity>) = with(ui) { drawerLayout { id = R.id.drawer_layout fitsSystemWindows = true coordinatorLayout { appBarLayout(R.style.AppTheme_AppBarOverlay) { toolbar { id = R.id.toolbar backgroundColor = colorAttr(R.attr.colorPrimary) popupTheme = R.style.AppTheme_PopupOverlay }.lparams(height=dimenAttr(R.attr.actionBarSize),width=matchParent) }.lparams(width=matchParent) relativeLayout { padding = dip(16) textView("Hello World!") }.lparams(height=matchParent,width=matchParent) { behavior = AppBarLayout.ScrollingViewBehavior() } }.lparams(height=matchParent,width=matchParent) navigationView { id = R.id.nav_view inflateHeaderView(R.layout.nav_header_main) inflateMenu(R.menu.activity_main_drawer) }.lparams(height=matchParent) { gravity = Gravity.START fitsSystemWindows = true } } } } 

Y en cambio, obtengo esta barra de estado blanca: anko

Los únicos cambios que hice fueron en MainActivity, cambiar el setContentView (R.layout.activity_main), a MainActivityUi.setContentView (this).

Entonces, mi pregunta es, ¿por qué sucede esto cuando tienen las mismas vistas y layouts? y como puedo arreglar eso?

EDITAR: estoy usando el proyecto pnetworkingeterminado que se creó cuando en Android Studio eliges un nuevo proyecto, y luego eliges DrawerNavigationActivity. Si en setContentView elijo mostrar la vista de xml, la barra de estado es azul (primera captura de pantalla), pero si elijo mostrar la vista de anko, obtengo la barra de estado blanca.

En ambos casos, estoy usando los mismos temas, colors, etc., y cuando uso el layout xml, todo está funcionando perfectamente, por lo que debe ser un problema de anko

Intenta hacerlo

window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

adentro onCreate ()

funcionó para mí

Referencia

EDITAR: También mi código

 drawerLayout { lparams(width = matchParent, height = matchParent) coordinatorLayout { setPadding(0, dip(24), 0, 0) appBarLayout { toolbar { backgroundColor = primaryColor setTitleTextColor(primaryColorText) }.lparams(width = matchParent, height = dip(toolbar_size)) }.lparams(width = matchParent, height = dip(toolbar_size)) }.lparams(width = matchParent, height = matchParent) navigationView { }.lparams(width = dip(302), height = matchParent) { gravity = Gravity.START } } 

Te equivocas al pensar que la barra de estado es transparent por defecto.

De acuerdo con esta image

enter image description here

tomado de Android Developers Reference. Compruebe: https://developer.android.com/training/material/theme.html

el color de la barra de estado depende de lo que haya definido en colors.xml o styles.xml en la carpeta de values como colorPrimaryDark , por lo que no es transparente.

Su problema no es white color white en la barra de estado, que es correcto para la transparencia, pero no tiene suficiente conocimiento del uso de temas en las aplicaciones de Android.

EDITAR: Cambiar el color de la barra de estado (Java):

 Window window = activity.getWindow(); // clear FLAG_TRANSLUCENT_STATUS flag: window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // finally change the color window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color)); 

o

  public void setStatusBarColor(View statusBar,int color){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //status bar height int actionBarHeight = getActionBarHeight(); int statusBarHeight = getStatusBarHeight(); //action bar height statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight; statusBar.setBackgroundColor(color); } } 

Espero que ayude

No es el problema de color de la barra de estado.
Corrígeme si estoy equivocado, creo que está usando la edición Cyanogenmod OS 13.0 por el aspecto del símbolo de la batería. Cambie de nuevo al tema pnetworkingeterminado en la sección de temas. Luego, informe si el problema persiste con su file colors.xml .

Consulte este enlace aquí para ver su problema con la barra de estado translúcida de Kotlin.
https://github.com/fython/MaterialStatusBarCompat