我在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>"
};
答案 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>"
};
}