2014-02-08 2 views
3

Мне просто нужно определить, находится ли панель навигации справа от экрана, как показано на рисунке ниже. БлагодаряОбнаружение, если панель навигации находится прямо на экране

screenshot with navbar to the right

+0

возможно дубликат [Detect Android Navigation Bar ориентации] (http://stackoverflow.com/questions/21057035/detect-android-navigation-bar-orientation) – NPike

+0

Как изменить текущее местоположение ориентации для панели навигации? – Benny

ответ

1

Панель навигации будет только в правой части экрана, если он находится в ландшафтном режиме. Таким образом, чтобы обнаружить это, используйте getResources().getConfiguration().orientation так:

String orientation = getResources().getConfiguration().orientation; 
if(orientation.equals("ORIENTATION_LANDSCAPE"){ 
    // screen in landscape, do what you want to do 
} 
+0

Спасибо за ответ, но я это знаю. Дело в том, что на некоторых устройствах (большинство) NavBar не справа, а внизу. –

+1

@ImmaWake Зачем вам это нужно (просто интересно)? И что касается этого ... Я не уверен, как вы его обнаружите. – hichris123

+0

хорошо, я отправил этот вопрос> http://stackoverflow.com/questions/21058087/android-disable-overlay-of-actionbar-and-navigationbar-for-flag-translucent пару недель назад и не получил ответов, которые помогли. Таким образом, моя работа заключалась в добавлении дополнения к верхней и нижней части моего макета, соответствующего статусной строке и ширине навигатора. –

2

Следующий фрагмент кода может помочь:

private boolean isNavigationBarRightOfContent(){ 
    Rect outRect = new Rect(); 
    ViewGroup decor = (ViewGroup) mActivity.getWindow().getDecorView(); 
    decor.getWindowVisibleDisplayFrame(outRect); 
    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    return dm.widthPixels == outRect.bottom; 
} 
0

Попробуйте это:

// retrieve the position of the DecorView 
    Rect visibleFrame = new Rect(); 
    getWindow().getDecorView().getWindowVisibleDisplayFrame(visibleFrame); 

    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    // check if the DecorView takes the whole screen vertically or horizontally 
    boolean isRightOfContent = dm.heightPixels == visibleFrame.bottom; 
    boolean isBelowContent = dm.widthPixels == visibleFrame.right; 
Смежные вопросы