Html内容可以是图片,文字,链接,图片可以是从服务器获取的,也可以是assert文件夹下
目标代码String content = "
文字部分文字部分文字部分文字部分文字部分文字部分。
文字部分文字部分文字部分文字部分文字部分
方法一:使用TextView加载
TextView的重构方法fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler),这里Html.TagHandler tagHandler可以为null
mTxtHtml.setText(Html.fromHtml(content, new ImageGetter() { @Override public Drawable getDrawable(String source) { Drawable myDrawable = null; try { myDrawable = Drawable.createFromStream( new URL(source).openStream(), "baidu_sylogo1.gif"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (myDrawable != null) { myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight()); } return myDrawable; } }, null));
也可以这样写
1 mTxtHtml.setText(Html.fromHtml(content, imgGetter, null)); 2 ImageGetter imgGetter = new Html.ImageGetter() { 3 @Override 4 public Drawable getDrawable(String source) { 5 Drawable drawable = Drawable.createFromPath(source); // Or fetch it 6 // from the URL Important 7 if (drawable != null) { 8 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), 9 drawable.getIntrinsicHeight()); 10 } 11 return drawable; 12 } 13 };
方法二:使用WebView
1 WebView webView = (WebView) findViewById(R.id.web_view); 2 WebSettings ws = webView.getSettings(); 3 ws.setJavaScriptEnabled(true); // 设置支持javascript脚本 4 ws.setAllowFileAccess(true); // 允许访问文件 5 ws.setBuiltInZoomControls(true); // 设置显示缩放按钮 6 ws.setSupportZoom(true); // 支持缩放 /** 7 // * 用WebView显示图片,可使用这个参数 8 // * 设置网页布局类型: 9 // * 1、LayoutAlgorithm.NARROW_COLUMNS : 适应内容大小 10 // * 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放 11 // */ 12 ws.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 13 ws.setDefaultTextEncodingName("utf-8"); // 设置文本编码 14 ws.setAppCacheEnabled(true); 15 ws.setCacheMode(WebSettings.LOAD_DEFAULT);// 设置缓存模式 16 //添加Javascript调用java对象 17 webView.addJavascriptInterface(this, "java2js"); 18 webView.setWebViewClient(new WebViewClientDemo()); 19 webView.setWebChromeClient(new WebViewChromeClientDemo()); 20 // 设置打开的网页 21 // webView.loadUrl("http://orgcent.com"); 22 // 使用WebView来显示图片 23 webView.loadData(content, "text/html", "utf8");
1 private class WebViewClientDemo extends WebViewClient { 2 @Override 3 public boolean shouldOverrideUrlLoading(WebView view, String url) { 4 view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器 5 return true; 6 } 7 } 8 9 private class WebViewChromeClientDemo extends WebChromeClient { 10 // 设置网页加载的进度条 11 public void onProgressChanged(WebView view, int newProgress) { 12 } 13 14 // 获取网页的标题 15 public void onReceivedTitle(WebView view, String title) { 16 } 17 18 // JavaScript弹出框 19 @Override 20 public boolean onJsAlert(WebView view, String url, String message, 21 JsResult result) { 22 return super.onJsAlert(view, url, message, result); 23 } 24 25 // JavaScript输入框 26 @Override 27 public boolean onJsPrompt(WebView view, String url, String message, 28 String defaultValue, JsPromptResult result) { 29 return super.onJsPrompt(view, url, message, defaultValue, result); 30 } 31 32 // JavaScript确认框 33 @Override 34 public boolean onJsConfirm(WebView view, String url, String message, 35 JsResult result) { 36 return super.onJsConfirm(view, url, message, result); 37 } 38 }
PS:引自网上的话:“如果你的图片是从网络上获取的,那么你一定不要用这种方法显示一张图片,因为这是最垃圾的办法,你的程序会经常被卡死。”做项目的时候没有遇到过,不知道是不是这样
http://www.ideasandroid.com/archives/378
参考:http://my.oschina.net/keeponmoving/blog/73706
http://my.oschina.net/caikezhan/blog/51568
http://orgcent.com/android-textview-no-underline-hyperlink/实现无下划线超链接