Android:在 Webview 中显示图像
Posted
技术标签:
【中文标题】Android:在 Webview 中显示图像【英文标题】:Android : Display images in Webview 【发布时间】:2012-05-28 21:11:38 【问题描述】:处理文件后,我得到一个 html 字符串,其中图像设置为
<img src="abc.001.png" style="margin-left:0pt; margin-top:0pt; position:absolute; z-index:-65536" />
不应修改图像的路径,因为我必须从列表中选择文件项。图像与文件位于同一目录中。我使用 loadData/loadDataWithBaseURL 加载 HTML 字符串,但没有显示图像。我只看到它的框架。
我该如何解决这个问题?如果我有许多索引为 .001.jpg、.002.png 等的图像,我可以应用该解决方案吗?(都在一个目录中)?
更新:谢谢,无论我如何命名图像,它都适用于 loadUrl() 语句。事实上,在将内容加载到 WebView 之前,我必须阅读和处理内容。这就是我使用 loadDataWithBaseUrl() 语句并遇到上述问题的原因。这是我在测试项目中读取和显示Test.html内容的代码。
String res = "";
File file = new File(Environment.getExternalStorageDirectory()+"/Test.html");
try
FileInputStream in = new FileInputStream(file);
if (in != null)
BufferedReader buffreader = new BufferedReader(
new InputStreamReader(in));
String line;
while ((line = buffreader.readLine()) != null)
res += line;
in.close();
catch (Exception e)
e.printStackTrace();
wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);
//wv.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/Test.html");
// 中的语句有效,但这不是我在实际项目中可以做的。我有一个解决方案:处理完内容后,我必须将其保存在一个临时 HTML 文件中,然后加载它,该文件稍后将被删除。但是,我仍然期待更好的解决方案:)
【问题讨论】:
你是如何初始化wv
的?
这篇文章可能会对你有所帮助***.com/a/65563997/3886504
【参考方案1】:
尝试更改图像文件的名称。我认为这是因为名称中有双点。
<img id="compassRose" src="CompassRose.jpg"></img>
这对我有用....
代码:
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
public class ***Activity extends Activity
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView view=(WebView)findViewById(R.id.webView1);
view.getSettings().setjavascriptEnabled(true);
view.loadUrl("file:///android_asset/index.html");
view.addJavascriptInterface(new MyJavaScriptInterface(), "Android");
final class MyJavaScriptInterface
public void ProcessJavaScript(final String scriptname, final String args)
mHandler.post(new Runnable()
public void run()
//Do your activities
);
index.html:
<html>
<head>
<title title="Index"></title>
</head>
<body>
<h2>Android App demo</h2>
<br /> <img src="CompassRose.jpg" />
</body>
</html>
结果:
【讨论】:
我制作了另一个 Android 项目,只是为了使用“abc.jpg”名称进行测试。没什么不同,WebView 只是显示图像框架。所以我认为 WebView 不能识别 src 部分不是因为图像名称。不幸的是,我无法将图像的完整路径放入文件中。 实际上这发生在一些图像上,但在其他作品中,我听说它是因为 webview 不能容忍的或格式不佳的 jpegs【参考方案2】:简单地使用:
webview.loadUrl("file:///android_asset/mypicture.jpg");
【讨论】:
【参考方案3】:你的问题在于这条线:
wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);
第一个参数(baseURL)为空。出于某种原因,即使您使用绝对 URL,WebView 也会拒绝加载任何链接的资源。如果您将代码更改为(假设您的图像存储在外部目录中),您可能会发现它会起作用:
wv.loadDataWithBaseURL ("file://" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null);
如果您引用网络上的资源,请记住添加适当的权限:
<uses-permission android:name="android.permission.INTERNET" />
抱歉,我的回复有点晚了。当我遇到这篇文章时,我正在研究类似的问题。
【讨论】:
有同样的问题,我所缺少的只是Environment.getExternalStorageDirectory()
in wv.loadDataWithBaseURL ("file://" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null);
【参考方案4】:
WebView webView=(WebView)findViewById(R.id.my_wb);
String url = "YOUR URL";
webView.getSettings().setLoadsImagesAutomatically(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(url);
【讨论】:
欢迎来到 ***。尽管此答案可能有效,但请考虑添加更多信息/描述以帮助其他用户理解您的意思。谢谢。 如果我有<WebView id="my_wb" />
,我很想知道R.id.my_wb
是如何解决的... R 是什么?以上是关于Android:在 Webview 中显示图像的主要内容,如果未能解决你的问题,请参考以下文章
Android:WebView loadDataWithBaseURL 不显示验证码图片
在android webview中使用apk扩展文件中的图像