Xamarin表示未首次显示的webview内容

时间:2015-05-28 09:11:26

标签: webview xamarin.forms

我在Xamarin Forms 1.4.2上使用WebView 我遇到的问题似乎是一个具有约束力的问题。但我不确定为什么会这样。

在我的OnAppearing()事件中,我从SQLite本地数据库中获取数据并将其填入WebView。

第一次加载页面时,未显示webview的内容。

我在WebView下有一个ListView。在列表视图中选择任何项目时,将显示webview的内容。

有没有人经历过这个?有工作吗?

我将我的webview直接绑定到HTML字符串:

webview.Source = new HtmlWebViewSource
{
     Html = @"<html>
                    <head>
                          <meta name='viewport' content='width=device-width; height=device-height; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'/>
                    </head>
                    <body height='100%'>"
                    + htmlstring
                    + @"</body>
               </html>"
};

2 个答案:

答案 0 :(得分:1)

这是因为你的行

<meta name='viewport' content='width=device-width; height=device-height; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'/>

纠正它,或者现在将其移除并在移除后检查。

答案 1 :(得分:0)

我尝试过以下示例,它适用于我。

根据您在OnAppearing 中的操作,您可能需要使用Xamarin.Forms.Device.BeginInvokeOnMainThread(()=>{...});打包更新。在下面的示例中,我已将其包括在内: -

<强> XAML: -

<StackLayout>
    <WebView x:Name="webView1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>    
    <Button x:Name="cmdLoadTestHtml1" Text="Load Test Html 1" Clicked="cmdLoadTestHtml1_Clicked"/>
</StackLayout>

代码背后: -

    protected override void OnAppearing()
    {
        base.OnAppearing();
        //
        LoadTestHtml("OnAppearing....");
        //
        // Alternatively try this:-
        //Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
        //    {
        //        LoadTestHtml("OnAppearing.");
        //    });
    }

    void cmdLoadTestHtml1_Clicked(object sender, EventArgs e)
    {
        LoadTestHtml("Button clicked");
    }

    void LoadTestHtml(string pstrSomeInnerContentToDisplay)
    {
        webView1.Source = new HtmlWebViewSource
        {
            Html = @"<html>
                <head>
                      <meta name='viewport' content='width=device-width; height=device-height; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'/>
                </head>
                <body height='100%'>"
                           + pstrSomeInnerContentToDisplay
                           + @"</body>
           </html>"
        };
    }