我们通常在TextView文本中设置文字。但是怎样设置图文混排呢?

我就在这里写一个样例 。我们须要用到一点简单的HTML知识

在TextView中预订了一些类似HTML的标签,通过标签能够使TextView控件显示不同颜色。大小,字体的文字

<font>:设置颜色和字体

<big>:设置大号

<small>:设置小号

<i>\<b>:斜体、粗体

<a>:链接地址

<img>:插入图片

在drawable中存入我们的图片。

然后我们在布局文件里加入一个TextView控件

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:orientation="vertical" >
  5.  
  6. <TextView
  7. android:id="@+id/tv_text"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content" />
  10.  
  11. </LinearLayout>

在MainActivity.clss文件里

写一行HTML形式的代码,并用一个字符串接收它

  1. String html="<font>草莓</font><img src=‘strawberry’>";

这行代码是什么意思呢?

大家也看了上面的HTML简单的标签。<font>是字体,所以<font>和</font>之间的是文字,<img>是图片,src是图片的名称

然后我们要解释这行HTML代码,就用到了这种方法

  1. Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)

当中source是字符串形式的 也就是我们须要解释的HTML代码。ImageGetter就是图片的资源,TagHandler就标签在这里设置为null即可。

那么ImageGetter该怎么写呢?我们能够new 一个ImageGetter对象 会发现里面有一个方法

  1. public Drawable getDrawable(String source) {
  2. }

我们能够使用输出日志信息看看这种方法里面传递的source是什么

发现了吗?就是我们Html代码里面的 内容<img src='strawberry'>

因为返回的是Drawable类型的资源我们首先new 一个Drawable对象,然后通过getSource()的方法获取图片资源

最后一定要通过setBounds()方法设置一下图片的大小。否则是不会显示的哦

  1. if(source.equals("‘strawberry’")){
  2. Drawable draw=getResources().getDrawable(R.drawable.strawberry);
  3. draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
  4. return draw;
  5. }

附上执行结果图片

MainActivity.class的所有代码例如以下:

  1. package com.example.textview;
  2.  
  3. import javax.xml.transform.Source;
  4.  
  5. import android.os.Bundle;
  6. import android.app.Activity;
  7. import android.graphics.drawable.Drawable;
  8. import android.text.Html;
  9. import android.text.Html.ImageGetter;
  10. import android.util.Log;
  11. import android.view.Menu;
  12. import android.widget.TextView;
  13.  
  14. public class MainActivity extends Activity {
  15.  
  16. private TextView tv_text;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. tv_text=(TextView) findViewById(R.id.tv_text);
  22. String html="<font>草莓</font><img src=‘strawberry’>";
  23. CharSequence text=Html.fromHtml(html, new ImageGetter() {
  24.  
  25. public Drawable getDrawable(String source) {
  26. //依据图片资源ID获取图片
  27. Log.d("source", source);
  28. if(source.equals("‘strawberry’")){
  29. Drawable draw=getResources().getDrawable(R.drawable.strawberry);
  30. draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
  31. return draw;
  32. }
  33. return null;
  34. }
  35. }, null);
  36. tv_text.setText(text);
  37. }
  38. }



android:怎样在TextView实现图文混排的更多相关文章

  1. Android TextView中图文混排设置行间距导致高度不一致问题解决

    最近项目中需要实现一个评论带表情的功能,刚开始一切顺利,非常easy,突然有一天发现文字跟表情混排的时候,TextView中图文高度不一致,excuse...什么鬼,之前明明测试过图文混排,不存在这个 ...

  2. 【转】Android TextView SpannableStringBuilder 图文混排颜色斜体粗体下划线删除线

    spannableStringBuilder 用法详解: SpannableString ss = new SpannableString("红色打电话斜体删除线绿色下划线图片:." ...

  3. 自定义图文混排视图MyImageTextView

    http://blog.csdn.net/xujunfeng000/article/details/36399339?utm_source=tuicool&utm_medium=referra ...

  4. Android 自绘TextView解决提前换行问题,支持图文混排

    先看下效果图: 上面是MTextView,下面是默认的TextView. 一.原因 用最简单的全英文句子为例,如果有一个很长的单词,这一行剩余的空间显示不下了,那么规则就是不打断单词,而是把整个单词丢 ...

  5. Android中Textview显示Html,图文混排,支持图片点击放大

    本文首发于网易云社区 对于呈现Html文本来说,Android提供的Webview控件可以得到很好的效果,但使用Webview控件的弊端是效率相对比较低,对于呈现简单的html文本的话,杀鸡不必使用牛 ...

  6. 使用android SpannableStringBuilder实现图文混排

    项目开发中需要实现这种效果 多余两行,两行最后是省略号,省略号后面是下拉更多 之前用过的是Html.fromHtml去处理图文混排的,仅仅是文字后图片或者文字颜色字体什么的, 但是这里需要在最后文字的 ...

  7. 使用android SpannableStringBuilder实现图文混排,看到许多其他

    项目开发需要达到这种效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFuY3lsb3ZlamF2YQ==/font/5a6L5L2T/fontsiz ...

  8. TextView + Spanned实现图文混排以及图片点击交互

    最近要实现图文混排的需求,webview过大,所以想到了用SpannableStringBuilder来实现. 不过参考了大量国内文章,大多数是教你如何实现图文混排,并没有提及图片点击交互的.有翻阅了 ...

  9. Android自动解析html带图片,实现图文混排

    在android中,如何将html代码转换为text,然后显示在textview中呢,有一个简单直接的方法: textView.setText(Html.fromHtml(content)); 然而用 ...

随机推荐

  1. firefox + pentadactyl 实现纯绿色高效易扩展浏览器(同时实现修改默认状态栏样式)

    这几天开始使用firefox+pentadactyl来搭建一个开源.可扩展.完全绿化的浏览器环境,以便随身带着使用,其中firefox的使用了24.0的长期支持版, 这边版本稳定, 快速, 兼容性好, ...

  2. TI 77GHZ雷达开发套件 RDP-DC100

                                        RDP-DC100用户使用手册           目录 1.      硬件说明... 3 1.1.      官方处理板的修 ...

  3. 用PHP开发自己的独立博客(一)——概述

    开篇废话:因为重新回归朝九晚五的生活,于是就想开始写技术博客,当是做技术文档了.于是试用了各类博客,CSDN.cnblogs都还不错.简单试用了一下,说说各自的特点. CSDN的界面不能定制,使用默认 ...

  4. 安卓app测试之内存分析

    一.内存分析步骤 1.启动App. 2.使用monitor命令打开:ADM(包含DDMS) ->update heap 3.操作app,点几次GC 4.dump heap 5.hprof-con ...

  5. 【转】上传并解析excel

    [转载自]http://blog.csdn.net/u011563331/article/details/51322523 通过解析excel,将数据存储到数据库中.现在将方法保存下来. 使用的是ap ...

  6. CMU-准备

    TOEFL成绩90分以上,GPA大于3.0,GRE1250分以上(不做明确要求) 申请条件:GRE成绩,建议有专科成绩;托福250,雅思7.0;简历;3封推荐信 TOEFL(The Test of E ...

  7. 王垠代表作《完全用Linux工作》

    完全用Linux工作-王垠   <完全用Linux工作>作者:王垠 完全用 GNU/Linux 工作 理解 GNU/Linux 更多精彩请直接访问SkySeraph个人站点:www.sky ...

  8. TWaver HTML5之树形布局

    转眼间春节假期已经过完,作为一个职业的程序猿,不知道大家有没有这样的感觉,一天不碰电脑,总觉得生活少点什么.今天是春节后上班的第三天,给大家分享一下我们前段时间的一个需求,需求是这样的:界面中的网元分 ...

  9. ViewPager与fragment详解链接

    http://blog.csdn.net/harvic880925/article/details/38453725, http://blog.csdn.net/mwj_88/article/deta ...

  10. C++11 Thread多线程的学习心得与问题

    C++11 ,封装了thread的多线程的类,这样对多线程的使用更加方便. 多线程的原理我不加赘述,可以参看操作系统等参考书. 多线程代码可以最大化利用计算机性能资源,提高代码的运行效率,是常用优化方 ...