TextView是一个非常强大的控件,有时须要在一个控件中同一时候显示图片和文字,使用TextView非常easy实现。

方法一:

聊天软件比方QQ一般都会有发送表情的功能,使用SpannableString+ImageSpan能够非常easy实现

  1. private void showImageFace(String s,View v)
  2. {
  3. Bitmap bitmap;
  4. ImageSpan imageSpan;
  5. // 创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
  6. SpannableString spannableString = new SpannableString(s);
  7. for(int i=0;i<name.length;i++)
  8. {
  9. Log.i("MainActivity", "查找:"+name[i]);
  10. int j=0;
  11. int start=0;
  12. while(s.indexOf(name[i],start)>=0)
  13. {
  14. start = s.indexOf(name[i],start);
  15. bitmap = BitmapFactory.decodeResource(getResources(), ids[i]);
  16. imageSpan = new ImageSpan(this, bitmap);
  17. // 用ImageSpan对象替换字符
  18. spannableString.setSpan(imageSpan, start-1, start+2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  19. start=start+3;
  20. }
  21. }
  22. ((TextView)v).setText(spannableString);
  23. }

注:有时须要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,都能够借助SpannableString对象实现。

方法二:

在XML文件里直接配置即可了

  1. <TextView
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:drawableLeft="@drawable/jface_fastcry"
  5. android:drawableBottom="@drawable/jface_giddy"
  6. android:drawableRight="@drawable/jface_girl_cute"
  7. android:drawableTop="@drawable/jface_girl_cry"
  8. android:gravity="center_vertical|center_horizontal"
  9. android:text="中间"
  10. />

方法三:

扩展TextView控件,复写onDraw方法

  1. protected void onDraw(Canvas canvas)
  2. {
  3. // TODO Auto-generated method stub
  4. super.onDraw(canvas);
  5. if(bitmap!=null)
  6. {
  7. canvas.drawBitmap(bitmap, 0, 0, null);
  8. Paint paint =new Paint();
  9. paint.setColor(0x77000000);
  10. canvas.drawRect(0, getHeight()-getTextSize()-getTextSize()/3,
  11. getWidth(), getHeight(), paint);
  12. }
  13. if(text!=null)
  14. {
  15. Paint paint =new Paint();
  16. paint.setColor(Color.WHITE);
  17. canvas.drawText(text, (getWidth()-text.length()*getTextSize())/2,
  18. getHeight()-getTextSize()/3, paint);
  19. }
  20. }

效果图片:

代码链接:http://download.csdn.net/detail/tangnengwu/7238325

在TextView中加入图片的更多相关文章

  1. 我的Android进阶之旅------&gt; Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...

  2. 我的Android进阶之旅------> Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...

  3. 【Swift】图文混排,ios开发中在textfield或textView中插入图片

    在ios开发中,我们一般都是在textfield或者textView中输入文字.当我们需要插入图片的时候其实也是很简单的 我们需要利用的textfield,textView的属性化文本,将图片以附件的 ...

  4. Android TextView中显示图片

    Android官方给我们提供的Html类下面的fromHtml方法 当你需要转换的HTML代码是带图片的,比如<IMG/>,那么你就需要使用到重载的第二个方法了,这个方法里面有个Image ...

  5. TextView中如何支持html标签,放置图片和动作标签

    TextView文本框和输入框几乎是一个正常的带界面的可交互的Android应用的基本组成 TextView主要作用是显示文本内容,其实还可以显示图片,当然有必要的话还可以为文本内容添加动作相应用户的 ...

  6. TextView和EditText中添加图片(ImageSpan)

    编辑框中加图片,以前一直以为很复杂,后来发现android有些类已经很好的实现了这些功能. 代码如下: [java] view plaincopy mSubjectDetailView = (Text ...

  7. Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

    在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及 ...

  8. android中用Spannable在TextView中设置超链接、颜色、字体

    昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类.首先,看一下其运行效果:  要给 TextView 加上效果,方式主要有几种: 第一种,自动 ...

  9. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/1873 ...

随机推荐

  1. SQL 事务及实例演示

    简介 事务,英文名称是transaction.是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成. 其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起 ...

  2. hdu 4778 Rabbit Kingdom(减少国家)

    题目链接:hdu 4778 Rabbit Kingdom 题目大意:Alice和Bob玩游戏,有一个炉子.能够将S个同样颜色的宝石换成一个魔法石.如今有B个包,每一个包里有若干个宝石,给出宝石的颜色. ...

  3. alv行可编辑时带出描述

    ALV显示可以编辑的状态下可以带出描述信息等,比如维护表程序输入公司代码时需要带出公司代码的描述,这时就需要通过下面事件来触发 定义一个类: CLASS lcl_event_receiver DEFI ...

  4. 关于ListCtrol自绘的技巧

    一.给控件添加排序功能report风格的list控件很多情况下都需要支持排序功能,而且最好支持按不同列进行排序.CListCtrl的类方法SortItems支持排序功能,但是在排序过程中,两个数据真正 ...

  5. 移动开发的框架(用Firepower,不用listview,超快) good

    我是通过http传送xml后台是阿帕奇的http server,后台可以用delphi或php 都可以.用post 刚才试了试自带的TNetHttpClient,感觉还好,代码封装也不算深,收发数据也 ...

  6. Mysql RR隔离更新列没有索引 会锁全表

    <pre name="code" class="html">mysql> show variables like '%tx_isolation ...

  7. TCP_NODELAY详解

    在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算 ...

  8. disruptor流程

    这里先不提那些编译器方面的优化.只看一下基于无锁环形队列的生产者消费者模型的工作流程.上一个图先: 当中,buffer是一个数组,用来模拟环形队列. slowest_reader记录最慢的reader ...

  9. 在VC++中启用内存泄露检测

    检测内存泄漏的主要工具是调试器和 CRT 调试堆函数.若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_ALLOC#include <stdlib.h># ...

  10. windows程序员进阶系列:《软件调试》之Win32堆

     win32堆及内部结构 Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆.默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中. 要获得_PEB的地址, ...