html图文阅读,图文混排

SpannableString简单的图文混排

SpannableString spannableString = new SpannableString("点击 按钮有惊喜");

ImageSpan imageSpan = new ImageSpan(this,R.mipmap.ic_launcher);

spannableString.setSpan(imageSpan,2,4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(spannableString);

Log.i("TextView",tv.getText().toString());

ddbf7eaaa6c6

Paste_Image.png

注意:在setSpan方法中,start和end代表的是图片所占位置的开始和结尾。

在任意位置插入

int index = tv.getSelectionStart();

Editable edit = tv.getEditableText();

Drawable drawable = BitmapDrawable.createFromPath(resultList.get(0).getPhotoPath());

int width = drawable.getIntrinsicWidth();

int height = drawable.getIntrinsicHeight();

float ratio = (float)height/width;

deviceWidth = displayMetrics.widthPixels;

drawable.setBounds(0,0,deviceWidth, (int) (deviceWidth*ratio));

String str = "\n"+resultList.get(0).getPhotoPath()+"\n";

SpannableString spannableString = new SpannableString(str);

ImageSpan imageSpan = new ImageSpan(drawable, DynamicDrawableSpan.ALIGN_BASELINE);

spannableString.setSpan(imageSpan,1,str.length()-1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

if(index< 0 || index >=edit.length()){

edit.append(spannableString);

}else{

edit.insert(index+1,spannableString);

}

tv.setSelection(index+spannableString.length());

HTML方式实现图文混排

Html.ImageGetter getImageGetterInstance() {

Html.ImageGetter imgGetter = new Html.ImageGetter() {

@Override

public Drawable getDrawable(String source) {

int fontH = (int) (getResources().getDimension(

R.dimen.textSizeMedium) * 1.5);

int id = Integer.parseInt(source);

Drawable d = getResources().getDrawable(id);

int height = fontH;

int width = (int) ((float) d.getIntrinsicWidth() / (float) d

.getIntrinsicHeight()) * fontH;

if (width == 0) {

width = d.getIntrinsicWidth();

}

d.setBounds(0, 0, width, height);

return d;

}

};

return imgGetter;

}

主要依赖上面这个类,通过书写html代码来实现图文混排,使用img标签和src属性。tv.append(Html.fromHtml("%22+resultList.get(0).getPhotoPath()+%22",getImageGetterInstance(),null));同时注意,source就是在ImageSpan中的那个source。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值