如何在MonoDroid中的WebView上显示进度条

时间:2012-05-07 06:03:46

标签: c# webview progress-bar xamarin.android

我一直在尝试使用monodroid在应用程序使用的WebView中显示进度条实现。我已达到相当远但似乎无法解决难题的最后部分。我正在使用Monodroid Pro的付费版本,并使用Galaxy S2作为测试设备。

以下是我到目前为止所做的事情: -

OnCreate部分: -

        Window.RequestFeature(WindowFeatures.Progress);

        SetContentView(Resource.Layout.Main);

        Window.SetFeatureInt(WindowFeatures.Progress, Window.ProgressVisibilityOn);

        wv.SetWebViewClient(new monitor());

        wv.LoadUrl("https://www.google.com");

现在on on progress改变了覆盖方法: -

  private class progress : WebChromeClient
  {
        public override void OnProgressChanged(WebView view, int newProgress)
        {                    
           base.OnProgressChanged(view, newProgress);
        }
  }

现在我看到的解决方案是用于Android的java实现,这非常简单,即: -

webview.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress)   
    {
        //Make the bar disappear after URL is loaded, and changes string to Loading...
        MyActivity.setTitle("Loading...");
        MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded

        //Return the app name after finish loading
        if(progress == 100)
            MyActivity.setTitle(R.string.app_name);
     }
 });

但是使用monodroid我不能像在Android实现中那样使用SetProgress方法,Activity实例可以在OnCreate方法中进行,而在Monodroid中,一个全新的类是制作然后webchromeclient首先继承,然后继承。我错过了什么?还有另一种我不知道的方式吗?一些帮助将非常感激。

1 个答案:

答案 0 :(得分:2)

C#不支持像Java这样的匿名类,因此您需要定义一个单独的类。 Activity.SetProgress()方法是公共的,这意味着您可以将对活动的引用传递给类,并使用它来调用方法:

public class CustomWebChromeClient : WebChromeClient
{
    private Activity _context;

    public CustomWebChromeClient(Activity context)
    {
        _context = context;
    }

    public override void OnProgressChanged(WebView view, int newProgress)
    {
        base.OnProgressChanged(view, newProgress);

        _context.SetProgress(newProgress * 100);
    }
}

然后你的活动可以创建这个类的一个实例,将它自己传递给构造函数:

webview.SetWebChromeClient(new CustomWebChromeClient(this));

我有一个更完整的浏览器演示available here,也可以帮助您开始。