我正在使用XE7 Rad Studio为Android和iPhone构建“应用程序”。暂时专注于Android。
根据要求,我需要在应用程序中加载HTML作为资源字符串。
WebBrowser1.LoadFromStrings(ResourceStrings.HTMLString,'');
//Loads the resource-string successfully.
但是在这个资源字符串中我需要加载图像,而我无法弄清楚如何做到这一点。我可以在部署中看到我已将图像加载到项目中{Bitmap_1,Bitmap_2,Bitmap_3}。
如何完成此行:
resource-string:
...'<a href="/images/im2.bmp"><img id="img2" class="thumbnail" src="/images/im2.bmp" alt="/images/im2.bmp"/></a>'...
非常感谢。
答案 0 :(得分:0)
如果您阅读了LoadFromStrings()
的{{3}},则会说:
在TWebBrowser组件中显示HTML字符串内容。
此方法使用以下参数:
内容:指定要显示的HTML字符串。
BaseUrl:指定用于解析加载页面中相对URL的路径。为了澄清,请考虑以下情形:此参数设置为
www.mycompany.com/departments/
,加载的页面定义链接<a href=’Sales.html’>Sales dept</a>
。在给定的情况下,点击此链接会打开http:// www.mycompany.com/departments/Sales.html
。
这是您遇到的确切方案。您的HTML包含指向外部图像的相对链接,但您没有提供BaseURL
,因此WebBrowser无法解析加载这些图像所需的正确URL。
在Deployment Manager中,将图像文件的远程路径设置为StartUp/Documents/images/
或StartUp/Library/Application Support/images/
。
在应用启动时,Delphi会将以StartUp
开头的文件复制到设备上的相应文件夹中。然后,您可以在致电LoadFromStrings()
时执行以下操作:
// note sure which function to use for 'StartUp/Library/Application Support/',
// maybe TPath.GetLibraryPath()? This example is for '/StartUp/Documents/'...
WebBrowser1.LoadFromStrings(ResourceStrings.HTMLString, 'file://' + TPath.GetDocumentsPath);
这将允许"/images/im2.bmp"
解析为file:///data/data/<application ID>/files/images/im2.bmp"
等