【问题标题】:Android - Hiding TitleBar after WebView LoadsAndroid - WebView 加载后隐藏 TitleBar
【发布时间】:2012-07-05 23:21:27
【问题描述】:

我目前在我正在开发的应用程序中有一个 WebView,在 WebView 中加载每个页面后,我想隐藏 TitleBar。我看过这个questionanswer 看起来应该完全符合我的要求,但是在页面完成加载后 TitleBar 永远不会隐藏。

我使用的代码与我链接到的答案相同,但我也将其包含在下面。我可以确认 onProgressChanged 正在被调用,并且当页面完成加载时进度确实被报告为 100,但是 setProgressBarIndeterminateVisibility(false) 和 setProgressBarVisibility(false) 似乎什么都不做。在发送内容之前,我正在使用 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 和 requestWindowFeature(Window.FEATURE_PROGRESS)。

我在 Android 2.3 和 4.1 上对此进行了测试,结果都是一样的,TitleBar 没有隐藏。

mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                setProgress(progress * 100);
                if(progress == 100) {
                    setProgressBarIndeterminateVisibility(false);
                    setProgressBarVisibility(false);
                }
            }
});

【问题讨论】:

  • 对于webview,必须在设置内容之前使用requestWindowFeature(),如果之前设置了内容再使用requestWindowFeature(),会产生运行时错误
  • 引用我的问题:“我在发送内容之前正在使用 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 和 requestWindowFeature(Window.FEATURE_PROGRESS)。”
  • 我指的是你的问题标题关于隐藏标题栏的答案
  • 不知道你在做什么......

标签: android webview titlebar


【解决方案1】:

我创建了一个针对 android 2.3 的 android web 浏览器并遇到了同样的问题。 解决方案是在您的主要活动中的某处添加这行代码。

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

确保将此行放在 setContentView() 方法之前,否则您的应用将强制关闭。

【讨论】:

  • 使用 Window.FEATURE_NO_TITLE 似乎总是隐藏 TitleBar,我希望做的是在页面完成加载后隐藏它,但在页面加载时让它可见,以便用户可以看到页面加载进度。
【解决方案2】:

旧的标题栏在功能上有所限制。您可能必须在活动布局中创建自己的标题栏,并使用setVisibility() 自己显示/隐藏它。

如果您使用的是 ActionBar 而不是旧的标题栏(无论如何人们都应该这样做),它有 show()hide() 方法,您可以使用它来做您想做的事情。

【讨论】:

  • 我希望能够使用 TitleBar,但我想我会创建自己的。谢谢。
  • 我强烈推荐使用 ActionBar,除非您有令人信服的理由不使用它。
  • 大多数设备都是 3.0 之前的版本,对于如此简单的事情,我真的不觉得使用 ActionBarSherlock 之类的东西值得。
  • 从现在开始的一年内,大多数设备都是 3.0+?我还是觉得用ActionBar比较好,ActionBarSherlock其实一点也不难用。创建具有相同功能的自定义标题栏并为其编写自己的辅助方法有点痛苦。我必须这样做,因为我们的设计师想出了一些我们无法用原生 ActionBar 复制的东西,但如果你没有这样的限制,我强烈建议使用它。
  • 我同意并且我更愿意只为 4.1 开发,但它只会在我们拥有的永远不会看到超过 2.3 的设备上运行。它只需要几行就可以自己制作了,我只需要处理 onProgressChanged。它还只占用 3dip 的屏幕空间。
【解决方案3】:

public void onProgressChanged(WebView 视图,int 进度) { 如果(进度

 pb.setProgress(progress);
if(progress==100)
{
      pb.setVisibility(ProgressBar.INVISIBLE);
}

*其中 pb =(ProgressBar)findViewById(R.Id.progressbar); 它对我来说正常工作 希望你的代码简单而甜蜜.....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多