android android-5.0-lollipop android-statusbar

android - ¿Puedo configurar FLAG_LAYOUT_NO_LIMITS solo para la barra de estado?



android-5.0-lollipop android-statusbar (8)

Puedes usar así para ocultar la barra de estado y la barra de navegación

WindowManager.LayoutParams attributes = getWindow().getAttributes(); attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow().setAttributes(attributes);

y para mostrar nuevamente la barra de navegación usa este

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); }

El color es gris para mí, tal vez pueda forzarlo a su color primario.

Necesito hacer barra de estado transparente. Estoy usando getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) y la barra de estado es la que deseo. Pero también afecta a la barra de navegación: se volvió transparente y getWindow().setNavigationBarColor(Color.BLACK) no hace nada.

¿Hay alguna forma de hacer solo la barra de estado transparente y no la barra de navegación?


Sí, puedes usar este código en Style.xml

<style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">true</item> </style>

Luego, para aplicarlo a su diseño, simplemente agregue la siguiente línea en el diseño raíz (vista):

<style name="TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowTranslucentStatus">true</item> </style>


encontré la solución hermano

<style name="transparent" parent="Theme.AppCompat.Light.NoActionBar">//AppCompat is the key; You can choose any other theme than the light-theme, but stick to AppCompat <item name="android:windowTranslucentStatus">false</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item> //Other styling(optional) </style>

y luego aplique este tema transparente a su manifiesto de actividad como este

<activity ... android:theme="@style/transparent"/>


este trabajo para mi

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

styles.xml

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

v21 / styles.xml

getWindow().setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS )

la barra de estado será transparente o translúcida, la barra de navegación no

¡espero que esto ayude!


usando el comentario de mikepenz

Lo que es exactamente el código de trabajo (convertido a kotlin) aquí abajo.

// at AppCompatActivity, min SDK is 16, I tested api 25 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) { window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) } if (Build.VERSION.SDK_INT >= 19) { window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN } if (Build.VERSION.SDK_INT >= 21) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) window.statusBarColor = Color.TRANSPARENT } setContentView(R.layout.activity_main) }


android:theme="@style/transparent"


fun showTransparentStatusbar() { activity!!.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) } fun removeStatusbarFlags() { activity!!.window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) }

Sólo la bandera de arriba funcionó para mí. Los botones de navegación están visibles, la barra de estado y la barra de acción están ocultas.

<style name="transparent" parent="Theme.AppCompat.Light">//AppCompat is the key; You can choose any other theme than the light-theme, but stick to AppCompat <item name="colorPrimaryDark">#00000000</item>//THIS is the important part. //Other styling(optional) </style>

No está trabajando. Dispositivo de prueba nexus 5.


getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);