随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0
数据加载中……

《Android/OPhone开发完全讲义》连载(6):为TextView组件加上边框

本文为原创,如需转载,请注明作者和出处,谢谢!

《Android/OPhone 开发完全讲义》目前计算机类销售总排名:互动网(china-pub)第3名,当当网新书热卖榜销售总排名第4名

本文为新书《Android/OPhone 开发完全讲义》的内容连载。《Android/OPhone开发完全讲义》一书现已出版,敬请关注。

购 买:

互动网(china- pub)
当 当(dangdang)
卓越亚马逊

《Android/OPhone 开发完全讲义》目录

源代码下载




上一篇:Notification 与状态栏信息

Android系统本身提供的TextView组件并不支持边框,但可以对TextView进行扩展来添加边框。我们可以使用如下两种方法为TextView组件添加边框。

1.  编写一个继承TextView类的自定义组件,并在onDraw事件方法中画边框。

2.  使用9-patch格式的图像作为TextView的背景图来设置边框(这个背景图需要带一个边框)。

onDraw事件方法中画边框非常容易,只需要画TextView组件的上、下、左、右四个边即可。这个自定义组件的代码如下:

package net.blogjava.mobile;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class BorderTextView extends TextView
{
    @Override
    
protected void onDraw(Canvas canvas)
    {
        
super.onDraw(canvas);
        Paint paint 
= new Paint();
        
//  将边框设为黑色
        paint.setColor(android.graphics.Color.BLACK);
        
//  画TextView的4个边
        canvas.drawLine(00this.getWidth() - 10, paint);
        canvas.drawLine(
000this.getHeight() - 1, paint);
        canvas.drawLine(
this.getWidth() - 10this.getWidth() - 1this.getHeight() - 1, paint);
        canvas.drawLine(
0this.getHeight() - 1this.getWidth() - 1this.getHeight() - 1, paint);
    }
    
public BorderTextView(Context context, AttributeSet attrs)
    {
        
super(context, attrs);
    }
}

在上面的代码中将边框设成了黑色,读者也可以根据需要将边框设置成任何的颜色,或从XML布局文件中读取相应的颜色值,关于自定义组件的详细介绍请读者参阅4.2的内容。

虽然可以直接使用带边框的图像作为TextView组件的背景来设置边框,但当TextView的大小变化时,背景图像上的边框也随之变粗或变细,这样看起来并不太舒服。为了解决这个问题,可以采用9-patch格式的图像来作为TextView组件的背景图。我们可以使用<Android SDK安装目录>\tools\draw9patch.bat命令来启动“Draw 9-patch”工具。制作9-patch格式的图像也很简单,将事先做好的带边框的png图像(必须是png格式的图像)用这个工具打开,并在外边框的上方和左侧画一个象素点,然后保存即可,如图1所示。9-patch格式的图像必须以9.png结尾,例如,abc.9.png。在生成完9-patch格式的图像后,使用<TextView>标签的android:background属性指定相应的图像资源即可。

                             图1

运行本例后,显示的效果如图2所示。

 


               图2

注意:如果想让TextView透明,也就是将TextView的父视图的背景色作为TextView组件的背景色,如图2所示的第3TextView组件,需要制作带边框的透明png图像(除了边框,图像的其他部分都是透明的),然后再生成9-patch格式的图像。







Android开发完全讲义(第2版)(本书版权已输出到台湾)

http://product.dangdang.com/product.aspx?product_id=22741502



Android高薪之路:Android程序员面试宝典 http://book.360buy.com/10970314.html


新浪微博:http://t.sina.com.cn/androidguy   昵称:李宁_Lining

posted on 2010-07-15 10:37 银河使者 阅读(2875) 评论(0)  编辑  收藏 所属分类: 原创移动(mobile)Android/OPhone


只有注册用户登录后才能发表评论。


网站导航: