基本原理

自定义一个IconTextView类继承自TextView,添加iconsrc属性,表示图片。

重新onDraw方法,将图片绘制到textVIew前面,然后将textView右移。

废话不多说了,直接代码就明白。

package com.zb;

import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawable;import android.util.AttributeSet;import android.view.View;import android.widget.TextView;

public class IconTextView extends TextView {

private final String nameSpace="http://com.zb.text";

//保存图像资源ID的变量    private int resourceId=0;

private Bitmap bitmap;

public IconTextView(Context context, AttributeSet attrs) {super(context, attrs);        resourceId=attrs.getAttributeResourceValue(nameSpace, "iconSrc", 0);//获取图像资源的值        if(resourceId!=0)            bitmap=BitmapFactory.decodeResource(getResources(), resourceId);

    }

    @Overrideprotected void onDraw(Canvas canvas) {if(bitmap!=null){            Rect src=new Rect();//原图区域            Rect target=new Rect();//目标区域

            src.left=0;            src.top=0;            src.right=bitmap.getWidth();            src.bottom=bitmap.getHeight();

int textHeight=(int) getTextSize();            target.left=0;

//计算图像复制区域的纵坐标,            target.top=(int) (((getMeasuredHeight()-getTextSize())/2)+1);

            target.bottom=target.top+textHeight;            target.right=(int) (textHeight*((float)bitmap.getWidth()/bitmap.getHeight()));

//绘制            canvas.drawBitmap(bitmap, src, target, getPaint());//向右移动TextView的的距离            canvas.translate(target.right+2,0);

        }super.onDraw(canvas);    }

}

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:zb="http://com.zb.text"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >

<com.zb.IconTextViewandroid:id="@+id/iconText1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        zb:iconSrc="@drawable/small"        android:text="妞给爷笑一个" />

<com.zb.IconTextViewandroid:id="@+id/iconText1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        zb:iconSrc="@drawable/small"        android:textSize="30dp"        android:text="妞给爷笑一个" />

</LinearLayout>

代码很简单把。
这里需要几个地方,namespace xmlns:zb="http://com.zb.text"要和代码里面定义的一样。
原文:http://blog.csdn.net/hopezhangbo/article/details/7351290#

转载于:https://www.cnblogs.com/shanzei/archive/2012/04/06/2434500.html

android 带图片的文本框相关推荐

  1. android文本框带图片格式,android 带图片的文本框

    基本原理 自定义一个IconTextView类继承自TextView,添加iconsrc属性,表示图片. 重新onDraw方法,将图片绘制到textVIew前面,然后将textView右移. 废话不多 ...

  2. C#带按钮的文本框TextBoxContainButton

    经常需要用到各种组合控件,每次组合太麻烦,通过打包成自定义控件,方便调用. 带按钮的文本框,如下图: 文本框内可以输入文本,响应文本框内容变化事件,按钮可以设置点击事件,图标 通过3个组合控件实现. ...

  3. android用java写文本框_Android 自动完成文本框的实例

    Android:自动完成文本框 xml文件代码如下: xmlns:android="http://schemas.android.com/apk/res/android" andr ...

  4. android+点击屏幕隐藏键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...

    1,实现方法一: 通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 android:id="@+id/traceroute ...

  5. 自定义Android带图片的按钮

    自定义Android带图片的按钮 前言 现在移动设备的按钮设计讲究大图标小文字,希望用户只要一看到图标便能知道这个按钮是干嘛的,但又要有必要的文字提示,最常见的就数搜索按钮了,上面一个大大的放大镜图标 ...

  6. java框体怎么添加背景图,文本框添加背景图片,文本框背景图片,public class

    文本框添加背景图片,文本框背景图片,public classpublic class WatermarkTextField extends JTextField { BufferedImage img ...

  7. Android Studio基础输入文本框EditText

    Android Studio基础输入文本框EditText 接续上一节<Android Studio 基础按钮使用> 1.提示文本框.输入文本框,在布局xml编写 <EditText ...

  8. java为文本框添加背景颜色,文本框添加背景图片,文本框背景图片,文本框添加水印[Java...

    文本框添加背景图片,文本框背景图片,文本框添加水印[Java 文本框添加水印 [Java]代码public class WatermarkTextField extends JTextField { ...

  9. html+css 带图片的搜索框

    最近写B/S项目比较忙,很久没更新,今天分享一个B/S比较常见的带图片的搜索框代码.希望可以对你们有所帮助. 效果图先展示一下: 图片用的是阿里巴巴矢量图标库的图,需要用到的话,直接拷贝到代码里面就可 ...

最新文章

  1. 5 年提速 500 倍,英伟达 GPU 创纪录突破与技术有哪些?
  2. ThreadPoolExecutor使用错误导致死锁
  3. 2016012101小学四则运算练习软件项目报告
  4. linux给普通用户分配root权限
  5. Create Tables and Build inserts from Tables by using Mygeneration Templates(Sql Server)
  6. SQL 2005 全文索引
  7. thinkphp mysql存储过程_MySql存储过程的创建与使用及在thinkphp中如何调用笔记
  8. HTTP 应用层过滤的兼容性问题及解决方案
  9. 存不存行李寄存平台_行李寄存柜和行李寄存平台的区别
  10. 站长之死:互联网界夹心层的梦想反思录
  11. 总谐波失真计算公式_知识学习:谐波的危害
  12. 十年PHP架构师的成长之路,程序员必备
  13. 光电编码器的原理及应用场合_光电编码器原理及应用电路
  14. Scrapy框架爬取新闻!
  15. 基于锚点定位和overflow的选项卡
  16. openGL绘制矩形的顶点定义与矩形绘制
  17. php语言有哪些特性,盘点PHP编程语言具有的特性
  18. oppo手机投屏到电脑上
  19. 宏碁公司再次遭遇入侵,160GB敏感数据泄露
  20. UI设计师是一群什么样的人?

热门文章

  1. C语言之scanf中的格式
  2. Linux C++ 回射服务器
  3. inet_pton, inet_ntop
  4. C++::探索对象模型
  5. Redis高频面试笔记:java版本号比较算法
  6. Java高级工程师必备知识!java入门书籍pdf
  7. Redis宕机数据丢失解决方案,不吃透都对不起自己
  8. 美团点评APP在移动网络性能优化的实践,赶快收藏备战金九银十!
  9. mysql 导入dbm文件_DBM数据导入到mysql数据库方法
  10. vue 源码学习(一) 目录结构和构建过程简介