2014-04-09 1 views
2

Как я могу получить высоту экрана (пиксель) без строки состояния. & actionbar Или также будет полезно, если какой-либо орган расскажет, как получить высоту панели состояния и панели действий. Я уже нашел высоту экрана, но он включает в себя панель состояния & панель действий. Я использую библиотеку поддержки v7 для панели действий. Я ищу в Интернете, но это решение не работает для меня.Как я могу получить высоту экрана (пиксель) без строки состояния и панели действий?

+0

Используйте класс DisplayMetrics для получения ширины и высоты. – Loganathan

+0

Я уже использую этот класс и способен находить всю высоту экрана, включая панель состояния и панель действий. пожалуйста, дайте мне знать, как получить высоту экрана без состояния и действия bar.thanks – user3302257

ответ

4

прибудет статусную высоту вы можете нравитесь:

Rect rectangle = new Rect(); 
Window window = activity.getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
int statusBarTop = rectangle.top; 
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int statusbarHeight = Math.abs(statusBarTop - contentViewTop); 

и что о панели действий, в ActionBarSherlock есть постоянные значения для этого: abs__action_bar_default_height. Может быть, вам стоит попытаться найти что-то подобное в панели поддержки lib.

p.s. В любом случае, поскольку вы знаете высоту строки состояния, вы можете получить высоту панели действий путем вычитания значения основного экрана X основного события и значения высоты строки состояния. Это будет выглядеть следующим образом:

mMainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 

      Rect rectangle = new Rect(); 
      Window window = getWindow(); 
      window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
      int statusBarHeight = rectangle.top; 
      int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
      int statusbarHeight = Math.abs(statusBarHeight - contentViewTop); 

      int[] location = {0,0}; 
      mMainLayout.getLocationOnScreen(location); 

      int actionbarheight = Math.abs(location[0] -statusBarHeight); 
      Toast.makeText(MainActivity.this, actionbarheight + "", 1).show(); 
     } 
    }); 

это было написано «на лету», просто чтобы дать вам представление о том, как сделать это.

+0

Я использую библиотеку поддержки v7 appcompat для отображения панели действий.thanks для ответа – user3302257

+0

здесь «contentViewTop» общая высота панели состояния и панели действий? – user3302257

+0

нет, contentViewTop - это верхняя часть экрана активности (с панелью действий, но без строки состояния) – OFFmind

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