【问题标题】:Navigation Bar in Android: size and positionAndroid中的导航栏:大小和位置
【发布时间】:2012-08-25 10:26:02
【问题描述】:

我目前正在为 Android 开发一个 OpenGL 应用程序。到目前为止一切正常,但导航栏有点令人不安......

有没有办法找出导航栏在横向时是像我的银河系一样在右侧,还是像在平板电脑上那样在底部。 另外我需要导航栏的高度和宽度。

有谁知道我如何做到这一点??

谢谢

【问题讨论】:

  • 导航栏是指带有主页、后退按钮的导航栏?
  • 对。对于我的 glViewport,我想根据方向减去栏的宽度或高度

标签: android navigationbar


【解决方案1】:

在这里发帖是为了帮助那些最终在这里寻找优雅处理导航栏和状态栏的方法的人。

请参考this post

正如许多类似问题中所建议的那样,例如thisthisthisthis,仅仅获取导航栏高度可能还不够。我们需要考虑是否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

【讨论】:

    【解决方案2】:

    我找到了解决问题的方法:

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size); 
        width = size.x;
        height = size.y;
    

    在这部分代码之后,width和height包含没有导航栏或通知栏的高度和宽度。

    【讨论】:

      【解决方案3】:

      我是这样做的:

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

      【讨论】:

      • 如果您有一个旋转时高度为 768px 的设备? height%10 != 0 将返回true,但导航栏在右侧。您有没有找到更可靠的解决方案来检查导航栏的位置?
      • 当时这是我为更多设备找到的唯一解决方案。但是我仍然找不到好的解决方案
      猜你喜欢
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2012-07-09
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多