2012-12-12 11 views
8

Uso la barra delle azioni nella mia applicazione.
Voglio l'altezza del ActionBar programatically quindi sto usando:
Ottieni l'altezza di ActionBar

ActionBar.getHeight(); 


Ma io sono sempre 0 il valore di altezza. Quindi, come posso ottenere l'altezza di ActionBar?

risposta

14

ho trovato l'alternativa di ActionBar.getHeight()
Se qualcuno di fronte lo stesso problema allora this collegamento è utile.

Mentre la risposta di @ Birdy è un'opzione se si desidera controllare in modo esplicito la dimensione ActionBar c'è un modo per tirarla su senza bloccare la dimensione che ho trovato nella documentazione di supporto. È un po 'imbarazzante, ma lo ha funzionato per me. Avrai bisogno di un contesto, questo esempio sarebbe valido in un'attività. ~ 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

Android". R.attr.actionBarSize "non funziona nella versione 2.3 di Android, ma" R.attr.actionBarSize "funziona con tutte le versioni di Android. basta usare "R.attr.actionBarSize" invece di "android.R.attr.actionBarSize" ed ecc. –

+0

Qualcuno sa come farlo in java (javafx)? – Lealo

3

Un modo semplice per trovare ActionBar altezza da metodo Activity onPrepareOptionMenu.

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

Anche il codice riportato di seguito è utile. Potrebbe essere necessario cambiare getContext() per questo

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

La risposta viene copiato da questa domanda What is the size of ActionBar in pixels?

Per la versione più recente di Android si potrebbe semplicemente fare questo:

getActionBar().getHeight() 
+0

lo apprezzo @Tim Hong. Lo esaminerò. – KDeogharkar

+0

Per la versione più recente di Android è sufficiente fare questo: getActionBar(). GetHeight() –

+3

getHeight() può restituire 0 anche se isShowing è true (probabilmente durante la sua animazione). Potrebbe essere necessario utilizzare il metodo degli attributi in alcuni casi. –