2014-12-15 10 views
2

Некоторые устройства, такие как Huawei Mate7, имеют навигационную панель, например, следующие шоу. Мой вопрос: 1, как получить высоту navi-bar? 2, как получить уведомление, когда нави-бар показывает и скрывает?как бороться с навигационной панелью?

Я искал отражение, чтобы найти полезную информацию, не удалось.

enter image description here

ответ

0

Получение высоты легко:

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); 
    } 
} 

Это хорошо сказать вам, если есть кнопка меню аппаратных средств на большинстве телефонов. Некоторые модели по-прежнему сообщают, что клавиши меню нет. В таких случаях вам придется разработать что-то, чтобы узнать модели, которые это делают, и учитывать это.

+0

Я пытаюсь выполнить код, например, он возвращает 144 в устройстве без навигационной панели. Поэтому я не уверен, что вы правы. Может быть, навигационная панель - это что-то еще? – user1447011

+0

Нет, это панель навигации. Я использую этот код в своих приложениях. Конечно, не у каждого телефона есть панель навигации, потому что у некоторых телефонов есть кнопки меню оборудования. И у некоторых телефонов есть и то, и другое. –

+0

Я попробую это на некоторых разных устройствах. – user1447011

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