Quelle est la taille d’ActionBar en pixels?

J’ai besoin de connaître la taille exacte d’ActionBar en pixels pour pouvoir appliquer une image d’arrière-plan correcte.

Pour récupérer la hauteur du ActionBar en XML, utilisez simplement

?android:attr/actionBarSize 

ou si vous êtes un utilisateur ActionBarSherlock ou AppCompat, utilisez cette

 ?attr/actionBarSize 

Si vous avez besoin de cette valeur lors de l’exécution, utilisez cette valeur

 final TypedArray styledAtsortingbutes = getContext().getTheme().obtainStyledAtsortingbutes( new int[] { android.R.attr.actionBarSize }); mActionBarSize = (int) styledAtsortingbutes.getDimension(0, 0); styledAtsortingbutes.recycle(); 

Si vous avez besoin de comprendre où cela est défini:

  1. Le nom d’atsortingbut lui-même est défini dans /res/values/attrs.xml de la plate- forme
  2. Le fichier themes.xml de la plateforme sélectionne cet atsortingbut et lui atsortingbue une valeur.
  3. La valeur atsortingbuée à l’étape 2 dépend de différentes tailles de périphérique, définies dans différents fichiers dimens.xml de la plate-forme, à savoir. core / res / res / values-sw600dp / dimens.xml

À partir des sources framework-res.apk de framework-res.apk d’Android 3.2, res/values/styles.xml contient:

  

3.0 et 3.1 semblent être les mêmes (au moins de l’AOSP) …

Pour obtenir la hauteur réelle de la barre d’action, vous devez résoudre l’atsortingbut actionBarSize lors de l’exécution.

 TypedValue tv = new TypedValue(); context.getTheme().resolveAtsortingbute(android.R.attr.actionBarSize, tv, true); int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId); 

L’un des échantillons Honeycomb se réfère à ?android:attr/actionBarSize

J’avais besoin de reproduire correctement ces hauteurs dans une application de compatibilité pré-ICS et de les creuser dans la source principale du framework . Les deux réponses ci-dessus sont en quelque sorte correctes.

Cela revient à utiliser des qualificatifs. La hauteur est définie par la dimension “action_bar_default_height”

Il est défini sur 48dip par défaut. Mais pour le pays, il est de 40dip et pour le sw600dp, il est de 56dip.

Si vous utilisez la compatibilité ActionBar du récent package support appcompat v7, vous pouvez obtenir la hauteur en utilisant

 @dimen/abc_action_bar_default_height 

Documentation

Avec la nouvelle bibliothèque de support v7 (21.0.0), le nom dans R.dimen est R.dimen @ dimen / abc_action_bar_default_height_ material .

Lors de la mise à niveau à partir d’une version précédente de la lib du support, vous devez donc utiliser cette valeur comme hauteur de la barre d’action

Si vous utilisez ActionBarSherlock, vous pouvez obtenir la hauteur avec

 @dimen/abs__action_bar_default_height 

La réponse de @ AZ13 est bonne, mais selon les directives de conception d’Android , l’ActionBar devrait avoir au moins 48dp de haut .

Le résumé de classe est généralement un bon sharepoint départ. Je pense que la méthode getHeight () devrait suffire.

MODIFIER:

Si vous avez besoin de la largeur, cela devrait être la largeur de l’écran (à droite?) Et cela peut être rassemblé comme ceci .

Sur mon Galaxy S4 ayant> 441dpi> 1080 x 1920> Obtention de la hauteur de la barre d’action avec getResources (). GetDimensionPixelSize J’ai 144 pixels.

En utilisant la formule px = dp x (dpi / 160), j’utilisais 441dpi, alors que mon appareil se trouve
dans la catégorie 480dpi. donc mettre cela confirme le résultat.

J’ai fait de cette façon pour moi-même, cette méthode d’assistance devrait être utile pour quelqu’un:

 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.obtainStyledAtsortingbutes(RES_IDS_ACTION_BAR_SIZE); if (att == null) { return 0; } float size = att.getDimension(0, 0); att.recycle(); return (int) size; } 

Le rapport d’écran est: 8.3: 100

exemple: si votre écran est de 1024 pixels alors 84 sera la hauteur de votre barre d’action.