¿Cuál es el tamaño de ActionBar en píxeles?
Necesito saber el tamaño exacto de ActionBar en píxeles para aplicar la imagen de fondo correcta.
13 answers
Para recuperar la altura de la barra de acción en XML, simplemente use
?android:attr/actionBarSize
O si eres un usuario de ActionBarSherlock o AppCompat, usa esto
?attr/actionBarSize
Si necesita este valor en tiempo de ejecución, use este
final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
new int[] { android.R.attr.actionBarSize });
mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();
Si necesita entender dónde se define esto:
- El nombre del atributo se define en el /res/values/attrs de la plataforma.xml
- Los temas de la plataforma.xml selecciona este atributo y le asigna un valor.
- El el valor asignado en el paso 2 depende de diferentes tamaños de dispositivo, que se definen en varias dimensiones.archivos xml en la plataforma, es decir. core/res/res / values-sw600dp/dimens.xml
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-29 22:26:41
De las fuentes compiladas de Android 3.2framework-res.apk
, res/values/styles.xml
contiene:
<style name="Theme.Holo">
<!-- ... -->
<item name="actionBarSize">56.0dip</item>
<!-- ... -->
</style>
3.0 y 3.1 parecen ser lo mismo (al menos desde AOSP)...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-24 07:50:53
Para obtener la altura real de la barra de acción, debe resolver el atributo actionBarSize
en tiempo de ejecución.
TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-23 09:04:25
Una de las muestras de panal se refiere a ?android:attr/actionBarSize
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-26 03:42:05
Necesitaba replicar estas alturas correctamente en una aplicación de compatibilidad pre-ICS y profundizar en el framework core source. Ambas respuestas anteriores son más o menos correctas.
Básicamente se reduce a usar calificadores. La altura se define por la dimensión "action_bar_default_height"
Se define como 48dip por defecto. Pero para-land es 40dip y para sw600dp es 56dip.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-27 21:14:35
Si está utilizando la barra de acción de compatibilidad del paquete de soporte v7 appcompat reciente, puede obtener la altura usando
@dimen/abc_action_bar_default_height
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-15 12:09:50
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 librería de soporte, debe usar ese valor como la altura de la barra de acción
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-23 00:48:15
Si está utilizando ActionBarSherlock, puede obtener la altura con
@dimen/abs__action_bar_default_height
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-20 11:06:03
La respuesta de
@AZ13 es buena, pero según las pautas de diseño de Android, la barra de acción debe ser al menos 48dp high.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-26 04:05:02
El Resumen de la clase suele ser un buen punto de partida. Creo que el método getHeight() debería ser suficiente.
EDITAR:
Si necesita el ancho, debe ser el ancho de la pantalla (¿correcto?) y eso se puede reunir así.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:24
En mi Galaxy S4 tener > 441dpi > 1080 x 1920 > Obteniendo la altura de la barra de acción con getResources ().getDimensionPixelSize Tengo 144 píxeles.
Usando la fórmula px = dp x (dpi/160), estaba usando 441dpi, mientras que mi dispositivo se encuentra
en la categoría 480dpi. así que poner que confirma el resultado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-16 19:08:40
Lo hice de esta manera para mí mismo, este método de ayuda debería ser útil para alguien:
private static final int[] RES_IDS_ACTION_BAR_SIZE = {R.attr.actionBarSize};
/**
* Calculates the Action Bar height in pixels.
*/
public static int calculateActionBarSize(Context context) {
if (context == null) {
return 0;
}
Resources.Theme curTheme = context.getTheme();
if (curTheme == null) {
return 0;
}
TypedArray att = curTheme.obtainStyledAttributes(RES_IDS_ACTION_BAR_SIZE);
if (att == null) {
return 0;
}
float size = att.getDimension(0, 0);
att.recycle();
return (int) size;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-11 06:04:07
La relación de pantalla es: 8.3: 100
Ejemplo : si su pantalla es de 1024 píxeles, entonces 84 será la altura de su barra de acción .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-04 11:36:50