android 带图片的文本框

基本原理

自定义一个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);

}

@Override
protected 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.IconTextView
android:id="@+id/iconText1"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
zb:iconSrc
="@drawable/small"
android:text
="妞给爷笑一个" />

<com.zb.IconTextView
android: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解

From: http://softbbs.zol.com.cn/1/32_7991.html 每天都能看到有不少网友在回复论坛之前发布的一篇破解WiFi密码的帖子&#xff0c;并伴随各种疑问。今天流云就为大家准备一篇实战型的文章吧&#xff0c;详细图文从思维CDlinux U盘启动到中文设置&#xff0c;如何进行路由SSID…

整理Linux查看系统日志的一些经常使用命令

整理Linux查看系统日志的一些经常使用命令 last-a 把从何处登入系统的主机名称或ip地址&#xff0c;显示在最后一行。-d 指定记录文件。指定记录文件。将IP地址转换成主机名称。-f <记录文件>  指定记录文件。-n <显示列数>或-<显示列数>  设置列出名单的显…

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…

判断整数序列是不是二元查找树的后序遍历结果

题目&#xff1a;输入一个整数数组&#xff0c;判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true&#xff0c;否则返回false。 例如输入5、7、6、9、11、10、8&#xff0c;由于这一整数序列是如下树的后序遍历结果&#xff1a; 8 / \ 6 10 / \ / \ 5 7 9…

iOS 从相机或相册获取图片并裁剪

/load user image - (void)UesrImageClicked { UIActionSheet *sheet; // 判断是否支持相机 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { sheet [[UIActionSheet alloc] initWithTitle:"选择图像" delega…

【EWSA无线路由密码破解工具 中文特别版下载】含教程及字典(弱口令生日特殊符号等)

From: http://softbbs.zol.com.cn/1/32_8011.html Elcomsoft Wireless Security Auditor简称EWSA,是一款极为强悍的路由密码破解工具&#xff0c;支持CPU、GPU调用破解&#xff0c;速度比但CPU破解厉害很多&#xff0c;加上此次分享的EWSA字典下载&#xff0c;可以帮助大家更好…

[Redux/Mobx] 什么是单一数据源?

[Redux/Mobx] 什么是单一数据源&#xff1f; Redux的store.getState只能得到一个数据源&#xff0c;通常这是一个对象&#xff0c;通常这也是React App中的唯一Redux数据源&#xff0c;这个state对象中的属性值通过combineReducer整合了子Reducer返回的state的值 个人简介 …

VMware vSphere简介

vSphere是VMware推出的基于云的新一代数据中心虚拟化套件&#xff0c;提供了虚拟化基础架构、高可用性、集中管理、监控等一整套解决方案 现VMware vSphere 版本为5.0&#xff0c;组件如下&#xff1a; ESXi&#xff1a;物理服务器的虚拟化层&#xff0c;它将处理器、内存、存储…

RESTful API 设计指南 (转)

RESTful API 设计指南 2016-02-23 ImportNew(点击上方公号&#xff0c;可快速关注) 作者&#xff1a;阮一峰 链接&#xff1a;http://www.ruanyifeng.com/blog/2014/05/restful_api.html 网络应用程序&#xff0c;分为前端和后端两个部分。当前的发展趋势&#xff0c;就是前端设…

find:查找文件或目录

From: http://yhj1065.blog.163.com/blog/static/198002172007111810502948/ 功能说明&#xff1a; find指令可以在系统中查找你想要的任何文件或目录&#xff0c;你可以通过不同的参数来查找你想要的。该指令也是系统管理员最常用、最强大、最方便的查找文件和目录的指令。 基…

[Redux/Mobx] 为什么redux能做到局部渲染呢?

[Redux/Mobx] 为什么redux能做到局部渲染呢&#xff1f; reducer从根往最子级的reducer中间各层总是返回一个新的state&#xff0c;这样的话&#xff0c;就会引起组件的大范围的re-render&#xff0c;但是这是可避免的 合理的利用selector&#xff1a;在connect函数中的第一个…

[zz]Linux操作系统下三种配置环境变量的方法

个人的总结: 设置了/etc/profile 和 ~/.bashrc 之后&#xff0c;使用了source 命令&#xff0c;是可以echo添加的变量&#xff0c;但是用getenv读不出来&#xff0c;然后使用env命令也显示不出来&#xff0c;是因为没有export!! ---------------------------------------------…

poj 2976 基础01分数规划

这个题算是01分数规划的最基本的应用了&#xff0c; 01分数规划是给你n对数(a1, b1)....(an, bn), 然后让你选择一些数对&#xff0c; 使得sigma(ai)/sigma(bi)最大。这里附上讲解一份&#xff0c; http://blog.csdn.net/hhaile/article/details/8883652&#xff0c; 代码如下&…

删除(.svn)目录

windows 平台&#xff1a; Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] "cmd.exe /c \"TITLE Remov…

[Redux/Mobx] 举例说明怎么在redux中定义action?

[Redux/Mobx] 举例说明怎么在redux中定义action&#xff1f; 利用actionCreator // 用户选择需要显示的subredditexport const SELECT_SUBREDDIT SELECT_SUBREDDITexport function selectSubreddit(subreddit) {return {type: SELECT_SUBREDDIT,subreddit} } 个人简介 我是…

模式——工程化实现及扩展(设计模式Java 版)

--模式——工程化实现及扩展&#xff08;设计模式Java 版&#xff09;王翔&#xff0c;孙逊著ISBN 978-7-121-15638-02012年4月出版定价&#xff1a;59.00元16开416页内 容 简 介设计模式不是一门适合空谈的技术&#xff0c;它来自于开发人员的工程实践又服务于工程实践。本书并…

异构计算

异构计算的英文名称是Heterogeneouscomputing&#xff0c;主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。 有点看不懂&#xff0c;没关系&#xff0c;有位大神给了一个通俗的解释&#xf…

[Redux/Mobx] Redux怎样设置初始状态?

[Redux/Mobx] Redux怎样设置初始状态&#xff1f; redux包里面的createStore方法的第二个可选参数即可设置state的初始值在定义从根到子的reducer时&#xff0c;可以通过默认参数的方式定义state的初始值 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很…

由Qt中qApp想到的(这是单例模式么???)

From: http://blog.csdn.net/qq575787460/article/details/7880972 学Qt时&#xff0c;发现只要包含头文件QApplication或者QCoreapplication&#xff0c;就用使用qApp&#xff0c;指向一个当前实例。 查看源码发现qApp是个宏&#xff1a; QApplication中&#xff1a;#define q…

根据网页地址获取页面内容

public JSONObject urlConn(String urlStr, String portStr){ String port getPort(portStr); urlStr (urlStr ! null)?(host port "/?" urlStr):(host port); int responseCode; try { url new URL(urlStr); conn (HttpURLConnection) url.openConnection…