在实际显示之前有没有办法检测android actionBar的高度?

时间:2012-03-29 17:23:07

标签: android android-actionbar

我想在ICS的android操作栏中设置自定义背景图片。我在显示它之前以编程方式重新缩放它,以便完全适合actionBar。问题是我需要提前知道actionBar的高度,但在实际显示之前调用actionBar.getHeight(),返回0。

如果我只是尝试将其作为actionBar的背景以xml样式包含,则无法通过保持纵横比来重新缩放它。 如果我在动作栏显示后尝试设置背景,我会得到一些奇怪的结果,图像浮在上面,切成两半。

似乎唯一的方法是以程序化方式调整大小。在我实际请求显示之前,有没有办法检测actionBar的大小?

谢谢

2 个答案:

答案 0 :(得分:3)

为什么不使用draw9patch图像? ActionBar的默认大小是48dip

您可能想知道的其他值

 <!-- Default height of an action bar. -->
<dimen name="action_bar_default_height">48dip</dimen>
<!-- Vertical padding around action bar icons. -->
<dimen name="action_bar_icon_vertical_padding">8dip</dimen>
<!-- Text size for action bar titles -->
<dimen name="action_bar_title_text_size">18dp</dimen>
<!-- Text size for action bar subtitles -->
<dimen name="action_bar_subtitle_text_size">14dp</dimen>
<!-- Top margin for action bar subtitles -->
<dimen name="action_bar_subtitle_top_margin">-3dp</dimen>
<!-- Bottom margin for action bar subtitles -->
<dimen name="action_bar_subtitle_bottom_margin">5dip</dimen>

答案 1 :(得分:3)

int height = 0;
TypedValue typeValue = new TypedValue();
getTheme().resolveAttribute(android.R.attr.actionBarSize, typeValue, true);
height = TypedValue.complexToDimensionPixelSize(typeValue.data,getResources().getDisplayMetrics());

Source