首页 > 代码库 > 在TextView中添加图片

在TextView中添加图片

TextView是一个很强大的控件,有时需要在一个控件中同时显示图片和文字,使用TextView很容易实现。

方法一:

聊天软件比如QQ一般都会有发送表情的功能,使用SpannableString+ImageSpan可以很容易实现

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  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文件中直接配置就行了

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  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方法

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  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, 00null);  
  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.           
  21.     }  

效果图片:



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