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.
- Manejo del título de ActionBar con la pila trasera del fragmento?
- ¿Puede Android Actionbar ser colocado verticalmente?
- ICS Spinner ("desplegable" en lugar de diálogo) en versiones anteriores de Android
- Cambiar el título de la barra de acción para cada desplazamiento de pestaña en android
- Android - Fade in / Fade out ActionBar Artículo cuando mostrar / ocultarlo
Por favor, dime que esta información está justo delante de mis ojos!
- ActionBarSherlock: ¿cómo acceder a la vista del botón de inicio?
- Cambiar el color de la línea en las pestañas - ActionBarSherlock
- ActionBarSherlock Ítem Icono de ancho extraño con Android 4.3
- Aplicar sombra y color de texto para el título y el elemento de menú en la barra de acción de Sherlock
- Cómo eliminar la flecha HomeAsUpButton de ActionBar Sherlock cuando se establece un ActionView para la búsqueda?
- Jar-Binding de ActionBarSherlock para Mono para Android
- Fragmento onResume no se llama después de Fragmento se desprende y luego volver a conectar
- ActionBarSherlock: cambiar homeAsUpIndicator no funciona
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ú:
- Android – Cómo copiar el emulador a un amigo para realizar pruebas
- ¿Puede el emulador de Android grabar y reproducir audio utilizando hardware de PC?