【问题标题】:Is there any way to pre-render a WebView control with Xamarin Forms?有没有办法使用 Xamarin Forms 预渲染 WebView 控件?
【发布时间】:2017-07-20 21:35:38
【问题描述】:

我创建了一组自定义 html5 音频控件,我在我的 iOS 和 Android Xamarin Forms 应用程序中使用它们。 当我导航到我的应用程序中此内容所在的页面时,WebView 在呈现 html 内容之前呈现为白框的一小部分时间。有什么方法可以在用户可见之前渲染这个视图?

public partial class TutorialPage : ContentPage
{
    private readonly ITutorialViewModel _dataModel;

    public TutorialPage(ITutorialViewModel dataModel)
    {
        InitializeComponent();
        Title = "Tutorial";
        var browser = new WebView() { HeightRequest = 150, WidthRequest = 400, HorizontalOptions = LayoutOptions.CenterAndExpand };
        browser.Source = DependencyService.Get<IBaseUrl>().Get();
        mainStack.Children.Add(browser);
    }
}

【问题讨论】:

    标签: c# android ios .net xamarin.forms


    【解决方案1】:

    您可以随时使用 webview 的事件。

    看看他们:

    导航 - 导航完成后引发的事件。

    导航 - 导航开始时引发的事件。

    所以你要做的就是在开始时将 webview 的“IsVisible”属性设置为 false,当 Navigated 事件触发时,将其设置回 true。

    例子:

    public partial class TutorialPage : ContentPage
    {
        private readonly ITutorialViewModel _dataModel;
    
        private WebView browser;
    
        public TutorialPage(ITutorialViewModel dataModel)
        {
            InitializeComponent();
            Title = "Tutorial";
            browser = new WebView() { HeightRequest = 150, WidthRequest = 400, HorizontalOptions = LayoutOptions.CenterAndExpand, IsVisible = false };
            browser.Source = DependencyService.Get<IBaseUrl>().Get();
            browser.Navigated += Browser_Navigated:
            mainStack.Children.Add(browser);
        }
    
        void Browser_Navigated (object sender, WebNavigatedEventArgs e)
        {
            browser.IsVisible = true;
        }
    }
    

    如果不想让WebView作为全局类变量,可以从Navigated事件的sender参数中获取,如下图:

    void Browser_Navigated (object sender, WebNavigatedEventArgs e)
    {
        ((WebView)sender).IsVisible = true;
    }
    

    【讨论】:

      【解决方案2】:

      我通过使背景透明来绕过我的问题。控件仍然会弹出,但比同时在页面上显示一个白框要好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 2023-03-29
        • 2019-12-10
        • 2018-07-03
        • 2020-08-12
        • 1970-01-01
        相关资源
        最近更新 更多