2012-12-12 69 views
8

我在我的應用程序中使用了Actionbar。
我想要的動作條的高度編程,因此我使用:
獲取ActionBar的高度

ActionBar.getHeight(); 


但我得到高度的0值。 那麼如何獲得ActionBar的高度?

回答

14

我找到了替代ActionBar.getHeight()
如果有人面臨同樣的問題,然後this鏈接是有用的。

而如果你想明確地控制 的動作條的大小是有辦法把它拉起來不鎖定 大小,我支持文檔中找到@小鳥的回答是一個選項。這有點尷尬,但 它適用於我。你需要一個上下文,這個例子在一個Activity中是有效的 。 〜Anthony

// Calculate ActionBar's height 
TypedValue tv = new TypedValue(); 
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { 
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); 
} 
+0

「機器人。 R.attr.actionBarSize「在Android版本2.3中不起作用,但」R.attr.actionBarSize「正在工作android所有版本。只需使用「R.attr.actionBarSize」而不是「android.R.attr.actionBarSize」等。 –

+0

任何人都知道如何在java(javafx)? – Lealo

3

一種簡單的方式找到動作條高度是從活動onPrepareOptionMenu方法。

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
      .... 
      int actionBarHeight = getActionBar().getHeight()); 
      ..... 
    } 
5

下面的代碼也會有幫助。您可能需要更改的getContext()這個

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

答案是從這個問題What is the size of ActionBar in pixels?

複製對於Android的新版本,你可以簡單地這樣做:

getActionBar().getHeight() 
+0

欣賞@Tim Hong。我會研究這一點。 – KDeogharkar

+0

對於較新版本的Android,您可以簡單地執行此操作: getActionBar()。getHeight() –

+3

即使isShowing爲true(可能在其動畫期間),getHeight()也可以返回0。在某些情況下,您可能需要使用屬性方法。 – 2014-04-30 17:11:07