Busqué en la documentación pero solo encontré esto: Enlace . ¿Qué se usa para hacer que la barra sea translúcida ? Lo que intento hacer es hacer que la barra de estado sea completamente transparente (como se muestra en la imagen a continuación) y hacerla compatible con versiones anteriores para APK <19:
Mis estilos.xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background"> @null </item>
<!-- Support library compatibility -->
<item name="background">@null</item>
<item name="android:displayOptions"> showHome | useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
</style>
</resources>
Lo que pude hacer:
android:fitsSystemWindows="true"
a mi activity_main.xml. Las barras del sistema son translúcidas y no transparentes.<item name="android:statusBarColor">@android:color/transparent</item>
a tu tema :)android:windowTranslucentStatus
falso e hizo que la barra de estado fuera transparente. Ahora hice lo mismo con la barra de navegación y agregué<item name="android:navigationBarColor">@android:color/transparent</item>
pero hace que ambas barras sean grises. UGH!w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
lugarSimplemente agregue esta línea de código a su archivo java principal:
fuente
Puede usar la biblioteca externa StatusBarUtil :
Agregue a su nivel de módulo
build.gradle
:Luego puede usar la siguiente utilidad para una Actividad para hacer que la barra de estado sea transparente:
Ejemplo:
fuente
Funciona para Android KitKat y superior (¡Para aquellos que quieran transparente la barra de estado y no manipulen la barra de navegación, porque todas estas respuestas también transparentarán la barra de navegación!)
La forma más fácil de lograrlo:
Coloque estas 3 líneas de código en
styles.xml (v19)
-> si no sabe cómo tener esto (v19), simplemente escríbalas en su valor predeterminadostyles.xml
y luego use alt+ enterpara crearlo automáticamente:Y ahora, vaya a su
MainActivity
Clase y elimine este Método de onCreate en la clase:Luego ponga este código en el
onCreate
método de la Actividad:¡Eso es!
fuente
Barra de estado y barra de navegación completamente transparentes
fuente
Para dibujar su diseño en la barra de estado:
valores / styles.xml
values-v21 / styles.xml
Use CoordinatorLayout / DrawerLayout que ya se encarga del parámetro fitsSystemWindows o cree su propio diseño para que le guste esto:
main_activity.xml
Resultado:
Captura de pantalla:
fuente
Puede usar el siguiente código para hacer que la barra de estado sea transparente. Ver imágenes con resaltado rojo que le ayuda a identificar el uso del código a continuación
Fragmento de código de Kotlin para su aplicación de Android
Paso: 1 Escriba el código en Método de creación
Paso 2: Necesita el método SetWindowFlag que se describe en el siguiente código.
Fragmento de código Java para su aplicación de Android:
Paso 1: Código de actividad principal
Paso 2: Método SetWindowFlag
fuente
Úselo
android:fitsSystemWindows="false"
en su diseño superiorfuente
Aquí hay una extensión en Kotlin que hace el truco:
fuente
Con este código en su XML, podrá ver la barra de tiempo en su actividad:
fuente
HAY TRES PASOS:
1) Simplemente use este segmento de código en su método @OnCreate
si está trabajando en Fragment, debe colocar este segmento de código en el método @OnCreate de su actividad.
2) Asegúrese de establecer también la transparencia en /res/values-v21/styles.xml:
O puede establecer la transparencia mediante programación:
3) De todos modos, debe agregar el segmento de código en styles.xml
NOTA: Este método solo funciona en API 21 y superior.
fuente
También puedes ver mi ejemplo con avatar animado y texto animado
ColapsarAvatarToolbarSample
Lee mi publicación en Medium
Entonces, permítanme explicar cómo funciona. Creé una vista personalizada implementada AppBarLayout.OnOffsetChangedListener . Dentro de HeadCollapsing Custom View fundé la vista de texto e imagen en AppBarLayout.
fuente
Puedes probar eso.
fuente
Si bien todas las respuestas anteriores circulan en torno a la misma idea fundamental y puede hacer que funcione con diseños simples utilizando uno de los ejemplos anteriores. Sin embargo, quería cambiar el color del fondo mientras usaba la navegación de fragmentos deslizante 'pantalla completa' (barra de pestañas a un lado) y mantener la navegación regular, pestañas y barras de acción.
Después de leer cuidadosamente un artículo de Anton Hadutski , comprendí mejor lo que está sucediendo.
Tengo
DrawerLayout
conConstraintLayout
(es decir, contenedor) que tieneToolbar
, incluir para el fragmento principal yBottomNavigationView
.Establecer
DrawerLayout
tenerfitsSystemWindows
que ser verdadero no es suficiente, necesita establecer ambosDrawerLayout
yConstraintLayout
. Suponiendo una barra de estado transparente, el color de la barra de estado ahora es el mismo que el color de fondo deConstraintLayout
.Sin embargo, el fragmento incluido todavía tiene el recuadro de la barra de estado, por lo que animar otro fragmento de 'pantalla completa' encima no cambia el color de la barra de estado.
Un poco de código del artículo que se refiere a
Activity
'sonCreate
:Y todo está bien, excepto que ahora
Toolbar
no aborda la altura de la barra de estado. Un poco más refiriéndose al artículo y tenemos una solución totalmente funcional:Main_activity.xml (tenga en cuenta que marginTop in
Toolbar
es para fines de vista previa, será reemplazado por el código):fuente
Encontré que jugar con styles.xml y la actividad era demasiado engorroso, por lo tanto, creé un método de utilidad común que tiene las siguientes opciones establecidas
Java
Kotlin DSL
Y eso es todo lo que se necesitó para lograr una barra de estado transparente. Espero que esto ayude.
fuente
android:fitsSystemWindows="true"
solo funciona en v21. Podemos configurarlo en el tema xml o en el diseño principal comoLinearLayout
o enCoordinateLayout
. Por debajo de v21, no pudimos agregar esta bandera. Cree una carpeta de valores diferentes con unstyle.xml
archivo diferente según su necesidad.fuente
Esto funcionó para mí:
fuente
Todo lo que necesitas es entrar
MainActivity.java
fuente
en mi caso, como tengo una barra de herramientas inferior, tuve un problema al probar las soluciones anteriores, los botones del sistema Android están cubiertos con mi menú inferior, mi solución es agregar dentro de la actividad:
fuente
Puede usar este código a continuación.
Incluya este diseño en su diseño principal.
toolbar.xml
Nota: Puede reemplazar SDP y SSP con dp y sp respectivamente.
fuente
en mi caso, no llamo en absoluto "onCreate" (es una aplicación nativa de reacción y esto también se puede solucionar mediante el uso del componente React-Native StatusBar) también se puede usar esto:
fuente
Esto debería funcionar
// En Activity's onCreate () por ejemplo
fuente
Encontré la respuesta mientras investigaba esta biblioteca: https://github.com/laobie/StatusBarUtil
entonces necesita agregar los siguientes códigos a su actividad
fuente
agregue estas líneas a su Actividad antes de setContentView ()
agrega estas 2 líneas a tu AppTheme
y lo último que tu minSdkVersion debe b 19
fuente
No use el
windowLightStatusBar
uso en su lugarstatusBarColor = @android:color/transparent
fuente
Esto es solo para API Level> = 21. Funciona para mí. Aquí está mi código (Kotlin)
fuente