【问题标题】:Show status bar in Android in PhoneGap app (ie prevent fullscreen)在PhoneGap应用程序中显示Android中的状态栏(即防止全屏)
【发布时间】:2015-03-30 20:17:58
【问题描述】:

我有一个 phonegap 3.0.0 应用程序。 我的应用程序涵盖了状态栏(带有时钟、接收信息等的东西)。由于我不是全屏游戏,所以这是不可取的。

我相信它是作为“全屏”应用程序运行的。

我在堆栈上发现了相反的帖子(即让应用程序全屏显示),并与建议的相反。我想知道 PhoneGap 或我用来创建项目的 PhoneGap CLI 是否发生了变化,因为我的应用正在全屏显示。

我试过这个:

  public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        super.setIntegerProperty("splashscreen", R.drawable.splash);

        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

        super.loadUrl(Config.getStartUrl(), 10000);
    }

这明确告诉它不要处于全屏模式......但它仍然显示全屏。

【问题讨论】:

    标签: android android-layout cordova


    【解决方案1】:

    上面建议的本机代码可以工作,但更简洁的方法是确保您在 config.xml 中没有:

    <preference name="fullscreen" value="true" />
    

    您也可以将其设置为“false”,但它实际上是默认值,因此没有必要。对我有用。

    【讨论】:

    • 这是安卓唯一的偏好吗?它会对ios应用程序做一些奇怪的事情吗?我只是在万不得已的情况下才编辑本机代码,所以如果可行,那么在我发布时它一定是未记录的。
    • 我只为安卓测试过。它以任何方式记录在“phonegap build”中:build.phonegap.com/docs/config-xml
    • 你应该在 iOS 上测试它并在这里报告 :)
    • 对我来说,这适用于 Android 版本,但不适用于 iOS 版本。有没有通用的解决方案?
    【解决方案2】:

    我想通了。

    Splashscreen 插件必须将其设置为全屏。 通过在super.loadUrl 之后调用clearFlags 方法,一旦应用加载,状态栏就会出现。

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.setIntegerProperty("splashscreen", R.drawable.splash);
        super.loadUrl(Config.getStartUrl(), 10000);
    
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    

    【讨论】:

    • 不错,我一直在尝试设置这个彻底的配置,没有意识到它实际上是启动画面与状态混淆
    • 启动画面!隐藏的罪魁祸首。这确实应该记录在案
    【解决方案3】:

    在 Eclipse 上的 res/xml/config.xml 中进行此更改。

    <preference
        name="fullscreen"
        value="false" />
    

    【讨论】:

      【解决方案4】:
      // Hide status bar
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
      // Show status bar
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
      

      默认行为不应该是全屏,你有没有在 xml 中修改过你的主题?

      我找到了一些其他代码,以防万一:

      private void toggleFullscreen(boolean fullscreen)
      {
          WindowManager.LayoutParams attrs = getWindow().getAttributes();
          if (fullscreen)
          {
              attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
          }
          else
          {
              attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
          }
          getWindow().setAttributes(attrs);
      }
      

      【讨论】:

      • +1 用于确认它不应该默认为全屏。我没有修改任何xml文件。这是为我生成的任何 phonegap cli。由于您的帖子,我意识到这一定是因为闪屏插件。看我的回答。
      • 只是让您知道:cyrilmottier.com/2012/05/03/…
      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多