2016-02-28 5 views
2

Я хочу, чтобы получить ActionBar высоты в моих OnCreate метод, а не после того, как взглядов, созданных как этого
первого путьполучить ActionBar высоты в Android

content.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
     @Override 
     public boolean onPreDraw() { 
      Log.d(tag + " onCreate", "getSupportActionBar().getHeight()=" + getSupportActionBar().getHeight()); 
      return true; 
     } 
    }); 

для этого, я использую этот код
второго пути

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

но моя проблема, когда я использую первый способ я получаю ActionBar высоты 56, и, когда я использую S ecound way i получить высоту actionbar 48.
и я думаю, что первый путь - правильный ответ, но я не хочу ждать, пока не создадут представления.
Может ли кто-нибудь мне помочь?
«Я использую htc желание 200 для теста с плотностью mdpi»

+0

Поскольку вы знаете, что 48 дп кажутся правильными, почему бы не использовать само значение? –

ответ

1

Вы можете иметь две разные высоты между этими двумя методами, потому что они возвращают значение двух разных вещей. Первый метод возвращает фактическую высоту ActionBar. Второй метод возвращает значение атрибута android actionBarSize.

Правильный способ иметь реальную ActionBar высоты является первой, но если вы говорите, что вы не хотите ждать создание взглядов, если вы используете Toolbar вы можете установить с помощью XML его высоты ?android:attr/actionBarSize и использования второй метод, где вы хотите получить высоту в пикселях.

Смежные вопросы