¿Mostrar la vista por encima de la barra de estado?

Recientemente vi una imagen de una aplicación que era capaz de mostrar una vista por encima de la barra de estado y también fue capaz de cubrirlo con una vista.

Sé que puede obtener una vista justo debajo de la barra de estado desde una vista con alinear la parte superior de los padres. Pero, ¿cómo conseguir una vista en la parte superior de la barra de estado?

Ejemplo

La respuesta por @Sadeshkumar es incorrecta para ICS y arriba (quizás GB también).

Una vista creada con TYPE_SYSTEM_ALERT y FLAG_LAYOUT_IN_SCREEN está cubierta por StatusBar .

Para obtener una superposición en la parte superior de la StatusBar de StatusBar , debe utilizar TYPE_SYSTEM_OVERLAY lugar de TYPE_SYSTEM_ALERT .

El problema es entonces, ¿cómo obtener clics / toques?

Deshabilitar la barra de estado del sistema: sin raíz


Después de dos días completos de búsqueda a través de mensajes SO y la lectura de los documentos Android una y otra vez .. Aquí está la solución que me ocurrió. (Probado)

  mView= new TextView(this); mView.setText("........................................................................."); mLP = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, 100, // Allows the view to be on top of the StatusBar WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, // Keeps the button presses from going to the background window WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | // Enables the notification to recieve touch events WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | // Draws over status bar WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); mLP.gravity = Gravity.TOP|Gravity.CENTER; mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); mWindowManager.addView(mView, mLP); 

No se olvide de los permisos:

 <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" /> 

Nota:
Probado hasta kitkat.

  int statusBarHeight = (int) Math.ceil(25 * getResources().getDisplayMetrics().density); View statusBarView = new View(MyActivity.this); statusBarView.setBackgroundColor(Color.GREEN); WindowManager.LayoutParams params = null; params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT,statusBarHeight,WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); params.gravity = Gravity.RIGHT | Gravity.TOP; WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); wm.addView(statusBarView, params); 

Una vista creada con TYPE_SYSTEM_ERROR y FLAG_LAYOUT_IN_SCREEN está cubierta por StatusBar .

  • HasStableIds () en ListView expandible?
  • Animación de fondo en Android?
  • Android mapview con fragmentos no se puede agregar dos veces?
  • Android: ExpandableListView indicador de grupo dibujable que es grande cuando uso mi propio icono
  • Android: cambiar LayoutParams de vista agregado por WindowManager
  • ImageView ser un cuadrado con ancho dinámico?
  • Cómo iniciar dos animaciones en dos vistas diferentes en API lvl 19
  • WebView: solicitud incorrecta al cargar una url
  • ExpandableListView muestra de Google
  • Actualizar la posición de la vista debajo de otra vista en Android
  • EditText setOnFocusChangeListener en todos los EditTexts
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.