在Xamarin应用程序中,我有一个CustomWebView
渲染器;我正在使用以下代码在视图中注入并在OnProgressChanged
的WebChromeClient
事件中显示进度条。
初始化:
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;
}
}
}
问题是进度条显示的很小,如:
我需要以完整的显示宽度和更大的高度来显示它。
您忘记设置进度条的宽度。
您可以使用屏幕宽度在自定义渲染器中设置进度条。之后,就可以了。
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);