在TextView中加入图片

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, 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
原文地址:https://www.cnblogs.com/bhlsheji/p/4348320.html