我目前正在开发适用于Android的OpenGL应用。到目前为止一切正常,但导航栏有点令人不安......
有没有办法确定导航栏是否位于右侧,就像在我的星系连接处,如果是在风景中,或者它是在平板电脑的底部。 另外我需要导航栏的高度和宽度。
有谁知道如何实现这个目标?
由于
答案 0 :(得分:1)
我找到了解决问题的方法:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
在这部分代码之后,宽度和高度包含高度和宽度,没有导航栏或通知栏。
答案 1 :(得分:1)
我是这样做的:
boolean hasMenuKey = ViewConfiguration.get(getApplicationContext())
.hasPermanentMenuKey();
//如果没有菜单键,则有导航栏
if (!hasMenuKey && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
if (dm.heightPixels%10!=0) {
//navigation bar is on bottom
} else {
//navigation bar is on right side
}
}
答案 2 :(得分:0)
在这里发布内容是为了使那些最终在这里找到可以优雅地处理Navigationbar和Statusbar的人的人。
引用this post。
正如许多类似问题(例如this,this,this和this中所建议的那样,仅获取导航栏的高度可能还不够。我们需要考虑是否 1。导航栏存在; 2。在底部还是向右或向左; 3。在多窗口模式下打开的应用程序。
有一个简单的单行解决方案
android:fitsSystemWindows="true"
或以编程方式
findViewById(R.id.your_root_view).setFitsSystemWindows(true);
您还可以通过
获得根视图findViewById(android.R.id.content).getRootView();
or
getWindow().getDecorView().findViewById(android.R.id.content)
有关获取根视图的更多详细信息,请参考-https://stackoverflow.com/a/4488149/9640177