博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 自定义组件-带图片的textView
阅读量:6912 次
发布时间:2019-06-27

本文共 2173 字,大约阅读时间需要 7 分钟。

1. 定义属性

2. 继承View : CustomTextView.java

 

import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Rect;import android.util.AttributeSet;import android.util.Log;import android.widget.TextView;/** * TODO: document your custom TextView class. */public class CustomTextView extends TextView {    private static final String TAG = CustomTextView.class.getSimpleName();    private Bitmap bitmap;    public CustomTextView(Context context) {        super(context);    }    public CustomTextView(Context context, AttributeSet attrs) {        this(context, attrs, R.attr.CustomizeStyle);    }    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.icon_textview);        int rsid = a.getResourceId(R.styleable.icon_textview_iconSrc,0);        if (rsid>0) {            bitmap = BitmapFactory.decodeResource(getResources(), rsid);        }        a.recycle();    }    @Override    protected void onDraw(Canvas canvas) {        RectBitmap(canvas);        super.onDraw(canvas);    }    public void RectBitmap(Canvas canvas) {        if (bitmap != null) {            //是否对原图片进行裁切            Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());            //显示在什么地方            Rect taget = new Rect();            //起点x的坐标            taget.left=0;            //起点Y的坐标:当前View的高度-字体实际占用的高度)/2 能保证图片与文字对齐            taget.top=(int)(getMeasuredHeight()-getTextSize())/2+1;//            System.out.println("getMeasuredHeight:"+getMeasuredHeight());//            System.out.println("getTextSize:"+getTextSize());            //保证图片等比缩放:X的坐标            taget.right = (int)(getTextSize() * (bitmap.getWidth() / (float)bitmap.getHeight()));            //Y的坐标            taget.bottom= (int) (taget.top+getTextSize());            canvas.drawBitmap(bitmap, rect, taget, getPaint());            canvas.translate(taget.right+2 , 0.5f);        }    }}

3:布局文件

 

转载地址:http://oqncl.baihongyu.com/

你可能感兴趣的文章
12个时间管理妙招
查看>>
Python面向对象之类的成员
查看>>
Win8上iis配置
查看>>
Confluence 6 配置 Office 转换器
查看>>
IT从业人员关注哪些问题
查看>>
Windows 2012 Hyper –V 3.0 New Functions
查看>>
maven部分插件配置demo
查看>>
Grin交易原理详解
查看>>
大数据体系【概念认知】系列-2:存储以及副本策略
查看>>
我的友情链接
查看>>
linux企业常用服务---haproxy+nginx搭建web高可用集群
查看>>
win7 断开 共享连接的操作方法
查看>>
CTSSD服务无法正常启动:Failure 4 in trying to open SV key PROCL-4/PROCL-5 clsctss_r_av2
查看>>
再议OPEN CURSOR与BULK COLLECT
查看>>
我的友情链接
查看>>
jquery attr与prop
查看>>
casatwy组件化方案
查看>>
Linux中ls对文件进行按大小排序和按时间排序
查看>>
Unix/Linux下安装NPM
查看>>
Apache与Tomcat区别联系
查看>>