Webview OnProgressChanged和进度栏

问题描述 投票:0回答:1

在Xamarin应用程序中,我有一个CustomWebView渲染器;我正在使用以下代码在视图中注入并在OnProgressChangedWebChromeClient事件中显示进度条。

初始化:

    var progressBar = new Android.Widget.ProgressBar(_context, null, Android.Resource.Attribute.ProgressBarStyleHorizontal);

    Control.SetWebViewClient(new CusWebViewClient($"javascript: {JavascriptFunction}"));

    Control.SetWebChromeClient(new CusWebChromeClient(progressBar));

    Control.AddView(progressBar);

CusWebChromeClient:

public class CusWebChromeClient : WebChromeClient
{
    Android.Widget.ProgressBar progressBar;

    public CusWebChromeClient(Android.Widget.ProgressBar progressBar)
    {
        this.progressBar = progressBar;
    }

    public override void OnProgressChanged(Android.Webkit.WebView view, int newProgress)
    {
        if (newProgress < 100 && progressBar.Visibility == ViewStates.Gone)
        {
            progressBar.Visibility = ViewStates.Visible;
        }

        progressBar.SetProgress(newProgress, true);

        if (newProgress == 100)
        {
            //progressBar.Visibility = ViewStates.Gone;
        }
    }
}

问题是进度条显示的很小,如:

enter image description here

我需要以完整的显示宽度和更大的高度来显示它。

xamarin xamarin.forms xamarin.android
1个回答
1
投票

您忘记设置进度条的宽度。

您可以使用屏幕宽度在自定义渲染器中设置进度条。之后,就可以了。

var width = (int)Application.Current.MainPage.Width;

[请注意,'应用程序'是'Android.App.Application'和'Xamarin.Forms.Application'之间的歧义引用。您可以添加以下参考文献来修复它。

using Application = Xamarin.Forms.Application;

更改:

Control.AddView(progressBar);

收件人:

Control.AddView(progressBar, width, 30);

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.