2017-03-01 86 views
0

我創建了一組自定義html5音頻控件,我在iOS和Android Xamarin Forms應用程序中使用了這些控件。 當我導航到應用程序中該內容所在的頁面時,WebView在渲染html內容之前呈現爲一個白色框。有什麼方法可以在用戶可見之前渲染此視圖?有沒有什麼辦法用Xamarin Forms預渲染WebView控件?

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); 
    } 
} 

回答

0

我繞過我的問題,使背景透明。控件仍然彈出,但它比在此期間在頁面上放置白色框更好。

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作爲一個全球性的類變量,你可以從導航的事件的sender參數得到它,如下圖所示:

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