Tamaño de la barra de notificación de Android y barra de título?

¿Hay una manera de obtener el tamaño de la barra de notificación y la barra de título en android? En este momento obtengo el ancho y la altura de la pantalla con:

Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); 

Después de eso quiero restar los tamaños de las barras para que pueda estirar un video sin perder la relación. Actualmente ocultar las barras porque no puedo ver una mejor manera.

Tal vez esto sea un enfoque útil: Con referencia a las Directrices de diseño de iconos, sólo hay tres alturas diferentes para la barra de estado (notificación) en función de la densidad de pantalla:

  • 24px para LDPI
  • 32px para MDPI
  • 48px para HDPI

Así que si recupera la densidad de pantalla del dispositivo usando densityDpi de DisplayMetrics usted sabe qué valor restar

Así que podría parecer algo así:

  DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int myHeight = 0; switch (metrics.densityDpi) { case DisplayMetrics.DENSITY_HIGH: Log.i("display", "high"); myHeight = display.getHeight() - 48; break; case DisplayMetrics.DENSITY_MEDIUM: Log.i("display", "medium/default"); myHeight = display.getHeight() - 32; break; case DisplayMetrics.DENSITY_LOW: Log.i("display", "low"); myHeight = display.getHeight() - 24; break; default: Log.i("display", "Unknown density"); 

La respuesta de Martin especificó la altura incorrecta (al menos como de SDKv11). Según las directrices de diseño de iconos , los iconos de barra de estado tienen una altura de 25dp, no de 32dp. 25dp se traduce en estas alturas específicas de densidad:

  • 19px para LDPI
  • 25px para MDPI
  • 38px para HDPI
  • 50px para XHDPI

Una manera fácil de observar estos tamaños es utilizar el jerárquico frente a un emulador o dispositivo con una densidad normal. Simplemente mire el valor de getHeight() para getHeight() de la barra de título. La barra de estado es un poco más complicada porque es parte del DecorView y no una vista en sí misma, así que obtenga su altura indirectamente mirando mTop para mTop de la barra de título, que se coloca inmediatamente debajo de la barra de estado. Por mis observaciones la barra de estado y barra de título coinciden con la altura de 25dp de los iconos de la barra de estado (no he visto una declaración de este hecho en la referencia android de SDKv11).

* Como para lo que sé, esto funciona perfectamente.

 public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; }* 

Hola creo que no es necesario y que será automáticamente si se utiliza un VideoView

 VideoView vv = (VideoView) findViewById(R.id.MainVideo); MediaController mc=new MediaController(this); mc.setEnabled(true); mc.show(0); vv.setMediaController(mc); vv.setVideoURI(Uri.parse(URLMedia)); vv.requestFocus(); vv.showContextMenu(); vv.start(); 

He encontrado un tutorial puede ser que sería útil para u útil para mí mil! Cómo aumentar el tamaño de la barra de título en una aplicación de Android? Usted puede cambiar su tamaño de la barra de título y la manera que usted lo quiere usted puede conseguirle afortunado el chap. que te diviertas

Lo siento por el comentario ficticio, pero eso no es correcto utilizar constantes como altura de la barra de notificación. Sólo obtener la vista global (PhoneWindow $ DecorView) a continuación, obtener su hijo (que será sólo una vista (FrameLayout)). Este diseño contiene las vistas de la aplicación You'r y mide toda la pantalla (@ see FrameLayout.mHeight ). La primera disposición de ella será You'r primera vista, así que conseguir la tapa de ella le dará la altura derecha de la barra de la notificación. El uso de FrameLayout sin su contexto no le traerá nada, porque la parte superior de su hijo será igual a 0 en ese caso.

Para el perezoso:

 ViewGroup decoreView = (ViewGroup)*YourActivityViewHere*.getRootView(); int barSize = ((ViewGroup)decoreView.getChildAt(0)).getChildAt(0).getTop(); 

también puedes usar

 getWindow().getDecorView().getRootView() 

En lugar de YourActivityViewHere

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