[英]Android : Display images in Webview
处理完文件后,我得到一个HTML图像,其中图像被设置为
<img src="abc.001.png" width="135" height="29" alt="" 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文件中然后加载它,该文件将在以后删除。 但是,我仍然期待更好的解决方案:)
尝试更改图像文件的名称。 我以为这是因为名字中有双点。
<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 StackOverFlowActivity 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>
结果:
你的问题在于:
wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);
第一个参数(baseURL)为null。 出于某种原因,即使您使用绝对URL,WebView也拒绝加载任何链接的资源。 您可能会发现,如果您将代码更改为(假设您的图像存储在外部目录中),它将起作用:
wv.loadDataWithBaseURL ("file://" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null);
如果您在网络上引用资源,请记住添加适当的权限:
<uses-permission android:name="android.permission.INTERNET" />
对不起,我的回复有点晚了。 当我遇到这篇文章时,我正在研究类似的问题。
只需使用:
webview.loadUrl("file:///android_asset/mypicture.jpg");
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.