Подтвердить что ты не робот

Как получить высоту панели состояния и панели кнопок софт-клавиш?

Есть ли способ в Android получить размер панели мягких кнопок и строки состояния togheter? или способ получить высоту экрана без высоты обоих этих баров? (они не всегда одинаковы, посмотрите на связь 7, например)

4b9b3361

Ответ 1

Высота строки состояния

Высота строки состояния зависит от размера экрана, например, в устройстве с размером экрана 240 X 320, высота строки состояния 20 пикселей, для устройства с размером экрана 320 x 480 высота строки состояния составляет 25 пикселей, для устройство с разрешением 480 x 800, высота строки состояния должна быть 38px

поэтому я рекомендую использовать этот script для получения высоты строки состояния

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 titleBarHeight= contentViewTop - statusBarHeight;

Log.i("*** Value :: ", "StatusBar Height= " + statusBarHeight + " , TitleBar Height = " + titleBarHeight); 

чтобы получить высоту строки состояния в методе onCreate() вашей деятельности, используйте этот метод:

public int getStatusBarHeight() { 
      int result = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
          result = getResources().getDimensionPixelSize(resourceId);
      } 
      return result;
} 

Панель кнопок софт-клавиш

Этот метод очень полезен для установки макета в Android KitKat (4.4). Используя это, вы можете избежать перекрытия панели мягких кнопок над вашим расположением.

Метод getRealMetrics доступен только с API 17 и +

@SuppressLint("NewApi")
private int getSoftButtonsBarHeight() {
    // getRealMetrics is only available with API 17 and +
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight)
            return realHeight - usableHeight;
        else
            return 0;
    }
    return 0;
}

Ссылка:

Высота строки состояния в Android

Размер панели мягких кнопок