Necesito saber el tamaño exacto de ActionBar en píxeles para aplicar la imagen de fondo correcta.
android
android-actionbar
Eugene
fuente
fuente
Respuestas:
Para recuperar la altura de ActionBar en XML, simplemente use
o si eres un usuario de ActionBarSherlock o AppCompat, usa esto
Si necesita este valor en tiempo de ejecución, use esto
Si necesita comprender dónde se define esto:
fuente
@dimen/abc_action_bar_default_height
directamente (ActionBarComapt) y funcionó (en el dispositivo mdpi). Pero tratar de obtener este valor en Samsung Galaxy SIII me devolvió un valor incorrecto. Eso es porquevalues-xlarge
(de alguna manera) es más preferido quevalues-land
cuando está en modo horizontal. Hacer referencia al atributo en su lugar funciona como un encanto.android.R.attr.actionBarSize
se resolverá en tamaño 0 en dispositivos anteriores a 3.0. Entonces, al usarActionBarCompat
uno, se apegaría a él en suandroid.support.v7.appcompat.R.attr.actionBarSize
lugar.De las fuentes descompiladas de Android 3.2
framework-res.apk
,res/values/styles.xml
contiene:3.0 y 3.1 parecen ser lo mismo (al menos desde AOSP) ...
fuente
Para obtener la altura real de la barra de acción, debe resolver el atributo
actionBarSize
en tiempo de ejecución.fuente
Una de las muestras de Honeycomb se refiere a
?android:attr/actionBarSize
fuente
?attr/actionBarSize
(tenga en cuenta la falta de espacio de nombres de Android) que funciona en todos los niveles de API.Necesitaba replicar estas alturas correctamente en una aplicación de compatibilidad anterior a ICS y buscar en la fuente central del marco . Ambas respuestas anteriores son más o menos correctas.
Básicamente se reduce a usar calificadores. La altura está definida por la dimensión "action_bar_default_height"
Está definido en 48dip por defecto. Pero para tierra es 40dip y para sw600dp es 56dip.
fuente
Si está utilizando la barra de acciones de compatibilidad del reciente paquete de soporte de v7 appcompat, puede obtener la altura usando
Documentación
fuente
Con la nueva biblioteca de soporte v7 (21.0.0) el nombre en
R.dimen
ha cambiado a @ dimen / abc_action_bar_default_height_ material .Al actualizar desde una versión anterior de la biblioteca de soporte, debe utilizar ese valor como la altura de la barra de acción
fuente
?attr/actionBarSize
si uno está buscando igualar a un regularActionBar
.Si está utilizando ActionBarSherlock, puede obtener la altura con
fuente
abs__
recursos prefijados directamente.La respuesta de @ AZ13 es buena, pero según las pautas de diseño de Android , la ActionBar debe tener al menos 48dp de altura .
fuente
fuente
El Resumen de la clase suele ser un buen lugar para comenzar. Creo que el método getHeight () debería ser suficiente.
EDITAR:
Si necesita el ancho, debe ser el ancho de la pantalla (¿verdad?) Y eso se puede reunir de esta manera .
fuente
En mi Galaxy S4 que tiene> 441 ppp> 1080 x 1920> Obtener la altura de la barra de acción con getResources (). GetDimensionPixelSize Obtuve 144 píxeles.
Usando la fórmula px = dp x (dpi / 160), estaba usando 441 ppp, mientras que mi dispositivo
pertenece a la categoría 480 ppp. poner eso confirma el resultado.
fuente
Lo hice de esta manera por mí mismo, este método auxiliar debería ser útil para alguien:
fuente