WEB开发网
开发学院手机开发Android 开发 自定义Android组件之带图像的TextView 阅读

自定义Android组件之带图像的TextView

 2010-05-14 16:36:00 来源:WEB开发网   
核心提示:target.bottom = target.top + textHeight;// 为了保证图像不变形,需要根据图像高度重新计算图像的宽度target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap.getHeight()));// 开始

target.bottom = target.top + textHeight;

// 为了保证图像不变形,需要根据图像高度重新计算图像的宽度

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

// 开始绘制图像

canvas.drawBitmap(bitmap, src, target, getPaint());

// 将TextView中的文本向右移动一定的距离(在本例中移动了图像宽度加2个象素点的位置)

canvas.translate(target.right + 2, 0);

}

super.onDraw(canvas);

}

}

在编写上面代码时需要注意如下3点:

1. 需要指定命名空间的值。该值将在标签的xmlns:mobile属性中定义。

2. 如果在配置组件的属性时指定了命名空间,需要在AttributeSet 接口的相应getter方法中的第1个参数指定命名空间的值,而第2个参数只需指定不带命名空间的属性名即可。

3. TextView类中的onDraw方法一定要在translate方法后面执行,否则系统不会移动TextView中的文本。

下面在main.xml文件中配置了7个IconTextView组件,分别设置了不同的字体大小,同时,文本前面的图像也会随着字体大小的变化而放大或缩小,配置代码如下:

复制到剪贴板 XML/HTML代码< ?xml version="1.0" encoding="utf-8"?>

< !-- 在下面的标签中通过xmlns:mobile属性定义了一个命名空间 -- >

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:mobile="http://net.blogjava.mobile" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent" >

< !-- mobile:iconSrc是可选属性,如果未设置该属性,则 IconTextView与TextView的效果相同 -- >

< !-- 由于IconTextView和Main类不在同一个包中,因此,需要显式指定 package -- >

< net.blogjava.mobile. widget.IconTextView

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:text="第一个笑脸" mobile:iconSrc="@drawable/small" / >

< net.blogjava.mobile.widget.IconTextView

上一页  1 2 3 4  下一页

Tags:定义 Android 组件

编辑录入:coldstar [复制链接] [打 印]
赞助商链接