Получение высоты легко:
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0)
{
height = resources.getDimensionPixelSize(resourceId);
}
Это вернет высоту навигационной панели в пикселях.
Что касается уведомления, что оно было скрыто, я не верю, что для этого есть событие. Вы должны явно указать своему приложению, чтобы скрыть навигационную панель. Он не скрывает своего.
Дополнительный код для обнаружения, если есть кнопка меню оборудования:
if (!ViewConfiguration.get(MainActivity.this).hasPermanentMenuKey())
{
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0)
{
height = resources.getDimensionPixelSize(resourceId);
}
}
Это хорошо сказать вам, если есть кнопка меню аппаратных средств на большинстве телефонов. Некоторые модели по-прежнему сообщают, что клавиши меню нет. В таких случаях вам придется разработать что-то, чтобы узнать модели, которые это делают, и учитывать это.
Я пытаюсь выполнить код, например, он возвращает 144 в устройстве без навигационной панели. Поэтому я не уверен, что вы правы. Может быть, навигационная панель - это что-то еще? – user1447011
Нет, это панель навигации. Я использую этот код в своих приложениях. Конечно, не у каждого телефона есть панель навигации, потому что у некоторых телефонов есть кнопки меню оборудования. И у некоторых телефонов есть и то, и другое. –
Я попробую это на некоторых разных устройствах. – user1447011