What is the size of ActionBar in pixels?
To retrieve the height of the ActionBar in XML, just use
?android:attr/actionBarSize
or if you're an ActionBarSherlock or AppCompat user, use this
?attr/actionBarSize
If you need this value at runtime, use this
final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes( new int[] { android.R.attr.actionBarSize });mActionBarSize = (int) styledAttributes.getDimension(0, 0);styledAttributes.recycle();
If you need to understand where this is defined:
- The attribute name itself is defined in the platform's /res/values/attrs.xml
- The platform's themes.xml picks this attribute and assigns a value to it.
- The value assigned in step 2 depends on different device sizes, which are defined in various dimens.xml files in the platform, ie. core/res/res/values-sw600dp/dimens.xml
From the de-compiled sources of Android 3.2's framework-res.apk
, res/values/styles.xml
contains:
<style name="Theme.Holo"> <!-- ... --> <item name="actionBarSize">56.0dip</item> <!-- ... --></style>
3.0 and 3.1 seem to be the same (at least from AOSP)...
To get the actual height of the Actionbar, you have to resolve the attribute actionBarSize
at runtime.
TypedValue tv = new TypedValue();context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);