J'ai besoin de connaître la taille exacte d'ActionBar en pixels afin d'appliquer une image d'arrière-plan correcte.
android
android-actionbar
Eugène
la source
la source
Réponses:
Pour récupérer la hauteur de l'ActionBar en XML, utilisez simplement
ou si vous êtes un utilisateur ActionBarSherlock ou AppCompat, utilisez ceci
Si vous avez besoin de cette valeur au moment de l'exécution, utilisez ceci
Si vous devez comprendre où cela est défini:
la source
@dimen/abc_action_bar_default_height
directement (ActionBarComapt) et cela a fonctionné (sur le périphérique mdpi). Mais essayer d'obtenir cette valeur sur Samsung Galaxy SIII m'a retourné une mauvaise valeur. C'est parce quevalues-xlarge
(en quelque sorte) est plus préféré qu'envalues-land
mode paysage. Faire référence à l'attribut fonctionne plutôt comme un charme.android.R.attr.actionBarSize
résolution sera de 0 sur les appareils pré-3.0. Donc, lorsque vous en utilisezActionBarCompat
un, vous vous en tiendrez à laandroid.support.v7.appcompat.R.attr.actionBarSize
place.À partir des sources décompilées d'Android 3.2
framework-res.apk
,res/values/styles.xml
contient:3.0 et 3.1 semblent être les mêmes (au moins de l'AOSP) ...
la source
Pour obtenir la hauteur réelle de la barre d'actions, vous devez résoudre l'attribut
actionBarSize
au moment de l'exécution.la source
L'un des échantillons Honeycomb fait référence à
?android:attr/actionBarSize
la source
?attr/actionBarSize
(notez le manque d'espace de noms Android) qui fonctionne à tous les niveaux de l'API.Je devais reproduire ces hauteurs correctement dans une application de compatibilité pré-ICS et 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 -land c'est 40dip et pour sw600dp c'est 56dip.
la source
Si vous utilisez l'ActionBar de compatibilité du récent package de prise en charge de l'application v7, vous pouvez obtenir la hauteur en utilisant
Documentation
la source
Avec la nouvelle bibliothèque de support v7 (21.0.0), le nom de
R.dimen
a changé en @ dimen / abc_action_bar_default_height_ material .Lors de la mise à niveau à partir d'une version précédente de la bibliothèque de support, vous devez donc utiliser cette valeur comme hauteur de la barre d'actions
la source
?attr/actionBarSize
si l'on cherche à correspondre à un habituéActionBar
.Si vous utilisez ActionBarSherlock, vous pouvez obtenir la hauteur avec
la source
abs__
directement les ressources préfixées.La réponse de @ AZ13 est bonne, mais selon les directives de conception d'Android , l'ActionBar devrait être d' au moins 48dp de haut .
la source
la source
Le résumé de la classe est généralement un bon point de départ. Je pense que la méthode getHeight () devrait suffire.
ÉDITER:
Si vous avez besoin de la largeur, ce devrait être la largeur de l'écran (non?) Et qui peut être rassemblée comme ceci .
la source
Sur mon Galaxy S4 ayant> 441 dpi> 1080 x 1920> Obtenir 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 441 dpi, alors que mon appareil se situe
dans la catégorie 480 dpi. donc mettre cela confirme le résultat.
la source
Je l'ai fait de cette façon pour moi-même, cette méthode d'aide devrait être utile pour quelqu'un:
la source