1.   

  1. package com.zb;  
  2.   
  3. import android.content.Context;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.graphics.Canvas;  
  7. import android.graphics.Rect;  
  8. import android.graphics.drawable.BitmapDrawable;  
  9. import android.util.AttributeSet;  
  10. import android.view.View;  
  11. import android.widget.TextView;  
  12.   
  13. public class IconTextView extends TextView {  
  14.       
  15.     private final String nameSpace="http://com.zb.text";  
  16.       
  17.     //保存图像资源ID的变量  
  18.     private int resourceId=0;  
  19.       
  20.     private Bitmap bitmap;  
  21.   
  22.     public IconTextView(Context context, AttributeSet attrs) {  
  23.         super(context, attrs);  
  24.         resourceId=attrs.getAttributeResourceValue(nameSpace, "iconSrc"0);//获取图像资源的值  
  25.         if(resourceId!=0)  
  26.             bitmap=BitmapFactory.decodeResource(getResources(), resourceId);  
  27.           
  28.     }  
  29.       
  30.     @Override  
  31.     protected void onDraw(Canvas canvas) {  
  32.         if(bitmap!=null){  
  33.             Rect src=new Rect();//原图区域  
  34.             Rect target=new Rect();//目标区域  
  35.               
  36.             src.left=0;  
  37.             src.top=0;  
  38.             src.right=bitmap.getWidth();  
  39.             src.bottom=bitmap.getHeight();  
  40.               
  41.             int textHeight=(int) getTextSize();  
  42.             target.left=0;  
  43.               
  44.             //计算图像复制区域的纵坐标,  
  45.             target.top=(int) (((getMeasuredHeight()-getTextSize())/2)+1);  
  46.               
  47.             target.bottom=target.top+textHeight;  
  48.             target.right=(int) (textHeight*((float)bitmap.getWidth()/bitmap.getHeight()));  
  49.               
  50.             //绘制  
  51.             canvas.drawBitmap(bitmap, src, target, getPaint());  
  52.             //向右移动TextView的的距离  
  53.             canvas.translate(target.right+2,0);  
  54.               
  55.         }  
  56.         super.onDraw(canvas);  
  57.     }  
  58.   
  59.       
  60.   
  61. }  
  1. "code" class="plain">"1.0" encoding="utf-8"?>  
  2. "http://schemas.android.com/apk/res/android"  
  3.     xmlns:zb="http://com.zb.text"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     android:orientation="vertical" >  
  7.   
  8.     
  9.         android:id="@+id/iconText1"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.         zb:iconSrc="@drawable/small"  
  13.         android:text="妞给爷笑一个" />  
  14.       
  15.     
  16.         android:id="@+id/iconText1"  
  17.         android:layout_width="fill_parent"  
  18.         android:layout_height="wrap_content"  
  19.         zb:iconSrc="@drawable/small"  
  20.         android:textSize="30dp"  
  21.         android:text="妞给爷笑一个" />  
  22.   
  23. "code" class="java" style="background-color: rgb(255, 255, 255); ">"code" class="java" style="background-color: rgb(255, 255, 255); ">"code" class="java" style="background-color: rgb(255, 255, 255); ">"font-family: monospace; white-space: pre; ">代码很简单把。  
  24. "code" class="java" style="background-color: rgb(255, 255, 255); ">布局文件"code" class="java" style="background-color: rgb(255, 255, 255); ">"code" class="java" style="background-color: rgb(255, 255, 255); ">这里需要几个地方,namespace xmlns:zb="http://com.zb.text"要和代码里面定义的一样。"code" class="java" style="background-color: rgb(255, 255, 255); ">ok!!  
  25.   
  26.   
  27.   
  28.   
  29.   
  30.   
  31.   
  32.   
  33.   
  34.   
  35.   
  36.   
"code" class="java" style="background-color: rgb(255, 255, 255); ">布局文件"code" class="java" style="background-color: rgb(255, 255, 255); ">"code" class="java" style="background-color: rgb(255, 255, 255); ">这里需要几个地方,namespace xmlns:zb="http://com.zb.text"要和代码里面定义的一样。"code" class="java" style="background-color: rgb(255, 255, 255); ">ok!!  
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  • "code"
     class="java" style="background-color: rgb(255, 255, 255); ">布局文件"code" class="java" style="background-color: rgb(255, 255, 255); ">"code" class="java" style="background-color: rgb(255, 255, 255); ">这里需要几个地方,namespace xmlns:zb="http://com.zb.text"要和代码里面定义的一样。"code" class="java" style="background-color: rgb(255, 255, 255); ">ok!!  
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  • //java/6175