前言:如遇到Textview显示带图片的html内容时图片不适应控件大小情况下可以试一下如下方法
1、TextView显示html内容用法:
MyImageGetter2 imageGetter = new MyImageGetter2(context, txt_image);
txt_image.setText(Html.fromHtml(“html内容”, imageGetter, null));
public class MyImageGetter2 implements Html.ImageGetter {
Context c;
TextView textView;
int width;
public MyImageGetter2(Context context, TextView textView) {
this.c = context;
this.textView = textView;
width = c.getResources().getDisplayMetrics().heightPixels;//横屏的宽
@Override
public Drawable getDrawable(final String source) {
final UrlDrawable urlDrawable = new UrlDrawable();
String strSource;
if(TextUtils.isEmpty(source)){
return urlDrawable;
if(source.substring(0,4).contains("http") || source.substring(0,4).contains("https")){
strSource =source;
}else {
strSource ="https:"+source;
Glide.with(c)
.load(strSource)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap loadedImage, GlideAnimation<? super Bitmap> glideAnimation) {
float scaleWidth = ((float) width) / loadedImage.getWidth();
Matrix matrix = new Matrix();
matrix.postScale((float) (scaleWidth+0.1), (float) (scaleWidth+0.1));//根据情况可以适当调整
loadedImage = Bitmap.createBitmap(loadedImage, 0, 0,loadedImage.getWidth(), loadedImage.getHeight(),matrix, true);
urlDrawable.bitmap = loadedImage;
urlDrawable.setBounds(0, 0, loadedImage.getWidth(),loadedImage.getHeight());
textView.invalidate();
textView.setText(textView.getText());
return urlDrawable;
class UrlDrawable extends BitmapDrawable {
protected Bitmap bitmap;
@Override
public void draw(Canvas canvas) {
// override the draw to facilitate refresh function later
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, getPaint());
2、WebView显示html内容用法:
WebSettings websetting = ((ZongHeActivitysAdapter.ContentHolder) viewHolder).web_view.getSettings();
websetting.setDefaultTextEncodingName("utf-8") ;
websetting.setUseWideViewPort(true);//设定支持viewport
websetting.setLoadWithOverviewMode(true);//页面自适应手机屏幕
websetting.setBuiltInZoomControls(true);
websetting.setSupportZoom(true);//设定支持缩放
websetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
websetting.setBlockNetworkImage(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
websetting.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
websetting.setDomStorageEnabled(true); //开启DOM形式存储
websetting.setDatabaseEnabled(true); //开启数据库形式存储
String appCacheDir = context.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath(); //缓存数据的存储地址
websetting.setAppCachePath(appCacheDir);
websetting.setAppCacheEnabled(true); //开启缓存功能
websetting.setCacheMode(WebSettings.LOAD_DEFAULT);//缓存模式
websetting.setAllowFileAccess(true);
web_view.loadDataWithBaseURL(null,getHtmlData(“html内容”),"text/html", "utf-8", null);
//------
private String getHtmlData(String bodyHTML) {
String head = "<head><style>img{max-width: 100%; width:auto; height: auto;}</style></head>";
return "<html>" + head + "<body>" + bodyHTML + "</body></html>";
android:id="@+id/recy_webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
2:代码实现
//图文混合
//要显示的接口数据
String content = data.getContent(.
在 Android Native App 的开发过程中,经常会遇到的一种场景就是要显示 HTML 内容,而 Android SDK 本身也提供了多种方式供开发者来呈现 HTML 内容。
张 谦, 软件工程师, IBM
陈 聪, 实习生, IBM
李 伟, 实习生, IBM
String s="<div><p>凤凰网港股港股通资金流向统计,9月27日,腾讯控股(00700.hk),美团-W(03690.hk),华润电力(00836.hk),南向资金净流入金额位列市场前三,分别净流入1125.70386百万,726.50990百万,361.71790百万。</p>
<table style=\"width: 100%; border-collapse: collapse; text-align: c
implementation 'com.zzhoujay.richtext:richtext:3.0.8'
implementation 'com.zzhoujay:html:1.0.2'
* 加载Html
* @param html
protected void loadHtml(String html, TextView textConten...
1、URLImageGetter类
import java.net.URL;import android.app.Activity;import android.content.Context;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.os.AsyncTask;i
问 题项目需要实现图文混排,后台给出来的文本是html格式的,ui要求需要调整行间距,webview可以显示各种标签,但是无法调整行间距,试着往span中添加line-height也失败了,而且webview无法调整内边距,且webview中的内容可以滑动,因此不太符合我们的要求最后决定还是使用textview来实现,这样可以调整各种样式,但是在写imagegetter的时候遇到一些问题搜索了很久...
https://daihanglin.github.io/2017/10/13/imageGetter/
1. 使用ImageGetter的场景
Android中用于显示文本的控件为textView,textView不仅仅能显示文本,同时也能显示富文本,即一些包含html标签的文本。
2. ImageGetter介绍
ImageGetter是一个接口,主...
上文中写了用ImageLoader实现图文混排中网络图片的显示,但是随后又发现了问题,网络加载慢时,会报空指针异常。如果给ImageLoader设置了默认图片的话,虽然不会报异常,但有时会一直显示默认图片,而不显示你所需要的网络图片。经过一番网络查找,找到一个能彻底解决问题的方法,下面例子中解决的是图文混排,加载网络图片,并将图片充满整个TextView的问题,示例如下:
package c
后端可能会用用富文本编辑器编写生成不同样式的HTML文本传给前端显示,Android有两种方式来处理,一种是用TextView,一种是用WebView.
先把两种方式的差异写在前面,请据此来酌情选择.TextView:TextView仅支持HTML的部分标签属性,本人亲测不支持的包括color的rgb表示形式,font-size,font-family等,此时仅仅会显示文本,不过...