Determinar si la barra de acción está dividida

Tengo un MapView con una barra de acción impulsada por ActionBarSherlock. La barra de acción es dividida (en pantallas "estrechas") y superpuesta / semitransparente (android: windowActionBarOverlay es true). Más o menos como la aplicación de Google Maps.

Ahora me gustaría empujar las vistas en la parte superior del mapa, en la parte inferior de la pantalla todavía manteniéndolo por encima de la barra de acción inferior. Mi problema aquí es que no sé la altura de la barra de acción inferior. Francamente, ni siquiera puedo encontrar una manera de saber si está dibujado o no. getHeight() parece devolver la altura de la barra de acción superior (o tal vez es la altura de ambos, pero todavía no sé si la barra de acción inferior existe o no.

Por favor, dime que esta información está justo delante de mis ojos!

Si está utilizando ActionBarSherlock puede buscar el valor booleano abs__split_action_bar_is_narrow

Basta con crear un método estático donde se puede hacer

 return ResourcesCompat.getResources_getBoolean(context, R.bool.abs__split_action_bar_is_narrow); 

Necesita usar la clase ResourcesCompat (de actionbarsherlock) porque pre 3.2 no puede leer carpetas con métricas (como valores-sw480)

Tuve el mismo problema. En los dispositivos telefónicos en modo vertical, la barra de acción se divide. Por lo tanto, los elementos de menú se encuentran en la barra de acción superior y las pestañas en una segunda barra de acciones (barra de herramientas) debajo. Simplemente no encontré ninguna forma posible de determinar la altura de la barra de acción: para ver qué espacio queda en la pantalla antes de construir mi pantalla.

Así que hice una suposición:

  • En pequeños y normales dispositivos de pantalla, la barra de acción se divide en modo vertical
  • En dispositivos de gran tamaño de pantalla (como Nexus 7) la barra de acción también se divide en modo retrato
  • En xlarge screensize dispositivos (tabletas) la barra de acción no se divide en modo retrato

Así que distingo las diferentes pantallas y creé un recurso bool

 <!-- res/values/booleans.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="is_split_actionbar">false</bool> </resources> <!-- res/values-small-port/booleans.xml res/values-normal-port/booleans.xml res/values-large-port/booleans.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="is_split_actionbar">true</bool> </resources> 

En el código accedo al valor como este:

 Boolean isSplit = getResources().getBoolean(R.bool.is_split_actionbar); 

Para obtener la altura de la barra de acción en el método onCreateView ():

 TypedValue typedVal = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.actionBarSize, typedVal, true); // use android.R when not using ABS int actionBarHeight = getResources().getDimensionPixelSize(typedVal.resourceId); 

Y dobla la altura si la barra de acción está dividida:

 if(isSplit) actionBarHeight = actionBarHeight * 2; 

No es una solución ideal, pero para mí esto funciona.

La barra inferior debe coincidir con la altura de la barra de acción normal. Por lo tanto, usando ?android:attr/actionBarSize (o en el caso de ActionBarSherlock ?attr/actionBarSize ) para la altura en XML o getResources().getDimensionPixelSize(R.attr.actionBarSize) en el código debe ser suficiente.

editar:

Er, en una segunda lectura de su pregunta, parece más centrado en determinar también si existe o no la barra de acción dividida.

Es posible que desee leer estas respuestas y los comentarios de seguimiento de Adam Powell, barra de acción gurú:

  • Error de instalación de Android Studio APK: "ruta de acceso local no existe"
  • No se puede emitir de ActionProvider a ShareActionProvider
  • actionBarSherlock subtítulo textSize
  • Los animadores sólo se pueden ejecutar en los subprocesos Looper en Sherlock Action Bar
  • Android Roboguice proguard warning
  • Cambiar la barra de acciones homeAsUpIndicator Programamtically
  • ActionItem perdido en la rotación de la pantalla
  • ActionBarSherlock, ViewPager, TabsAdapter Fragmentos de tabulación anidados
  • Desaparición de los botones de la barra de acción al pasar entre fragmentos
  • Android Viewpager como Galería de imágenes de diapositivas
  • ActionBarSherlock con múltiples MenuItems?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.