Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Webview on ProgressChanged和progressbar_Xamarin_Xamarin.forms_Xamarin.android - Fatal编程技术网

Xamarin Webview on ProgressChanged和progressbar

Xamarin Webview on ProgressChanged和progressbar,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,在Xamarin应用程序中,我有一个CustomWebView渲染器;我正在视图中注入并在WebChromeClient的OnProgressChanged事件中显示带有以下代码的进度条 初始化: CusWebChromeClient: public class CusWebChromeClient : WebChromeClient { Android.Widget.ProgressBar progressBar; public CusWebChromeClient(Andr

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

初始化:

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;
        }
    }
}
公共类CusWebChromeClient:WebChromeClient
{
Android.Widget.ProgressBar ProgressBar;
公共CusWebChromeClient(Android.Widget.ProgressBar ProgressBar)
{
this.progressBar=progressBar;
}
public override void OnProgressChanged(Android.Webkit.WebView视图,int newProgress)
{
if(newProgress<100&&progressBar.Visibility==ViewStates.Gone)
{
progressBar.Visibility=ViewStates.Visible;
}
progressBar.SetProgress(newProgress,true);
如果(newProgress==100)
{
//progressBar.Visibility=ViewStates.Gone;
}
}
}
问题是进度条显示得非常小,如:


我需要以全显示宽度和更高的高度显示它。

您忘了设置进度条的宽度

可以使用屏幕宽度在自定义渲染器中设置进度条。在那之后,一切都会好起来的

var width = (int)Application.Current.MainPage.Width;
请注意,“Application”是“Android.App.Application”和“Xamarin.Forms.Application”之间的模糊引用。您可以添加如下引用来修复它

using Application = Xamarin.Forms.Application;
更改:

Control.AddView(progressBar);
Control.AddView(progressBar, width, 30);
至:

Control.AddView(progressBar);
Control.AddView(progressBar, width, 30);

与您确认,是否要在WebView或WebChromeClient上使用progressBar进行渲染?我需要在WebChromeClient事件中使用它,因为我有该事件there@WendyZang-你有其他的解决方案吗?我试着用你提供的代码段进行复制,但我仍然需要更多的信息。你能在GitHub上提供代码示例供我测试吗?@WendyZang MSFT你可以在这里查看: