使用WebView加载本地HTML Xamarin Forms

问题描述:

我想在Xamarin窗体的webview中加载本地HTML页面。 我使用开发文档中的基本示例,但我可以获取要加载的URL我无法加载自己的HTML页面。这只需要通过Android来完成,因此不用担心IOS和Windows。使用WebView加载本地HTML Xamarin Forms

XAML中:

<WebView 
    x:Name="webviewjava"></WebView> 

的背后代码:

public partial class javscriptExample : ContentPage 
{ 
    public interface IBaseUrl { string Get(); } 
    public javscriptExample() 
    { 
     InitializeComponent(); 
     var source = new HtmlWebViewSource(); 

     source.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 

     webviewjava.Source = source; 
    } 
} 

平台特定的文件(LocalFile.cs): 只是要注意这已被设置为一个Android的资产。

[assembly: Dependency(typeof(LocalFiles))] 
namespace maptesting.Droid 
{ 
    public class LocalFiles: IBaseUrl 
    { 
     public string Get() 
     { 
      return "file:///android_asset/"; 
     } 

    } 
} 

并且在资产的文件夹下还有一个'TestWebPage.html',也被设置为Android资产。

虽然我不知道问题是什么,我已经通过调试,基地网址回来空白。只是为了清楚我没有找到没有找到的文件,屏幕只是空白。 此外,我不知道这是否有所作为。在LocalFiles.cs文件中'IBaseUrl'上没有语法高亮显示。所以我不确定它是否能“看到”它。

任何想法?

WebView.BaseUrl只告诉WebView从哪里开始查找文件。这是“网站”的根文件夹。默认情况下,浏览器将加载文件index.html,所以如果您将文件重命名为index.html,我相信它应该自动加载。

我想这应该是可能太:

webviewjava.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 
webviewjava.Source = "TestWebPage.html"; 

在这里,我们说“使用此位置作为默认的地方去寻找文件”和“查找该文件并使用它作为源HTML“。

+0

谢谢,我会看看这个 – user3355961

林不知道这是否重要,但我找到了解决办法。而不是采取上述路线,我只是这样做:

webviewjava.Source = "file:///android_asset/TestWebPage.html"; 

在后面的代码,并刚刚离开了IBaseUrl打电话干脆。 这工作正如它应该的。

+0

,因为它去上班那不算解决只在Android上。你应该真的创建依赖项服务,并在每个实现中返回适当的字符串。对于android它是“文件:///android_asset/TestWebPage.html”,对于IOS它将是别的 –

+0

它只需要在Android中工作,我确实在这个问题中说过。 – user3355961

我也有同样的问题的痛苦,但我以下列方式

使用“UrlWebViewSource”而不是“HtmlWebViewSource”

var urlSource = new UrlWebViewSource(); 

string url = DependencyService.Get<IWebViewBaseUrl>().GetBaseUrl(); 


      string TempUrl = Path.Combine(url, "imprint.html"); 
      urlSource.Url = TempUrl; 
WebBrowser.Source = urlSource;