本文为原创,如需转载,请注明作者和出处,谢谢!
源代码
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(
0
,
0
,
this
.getWidth()
-
1
,
0
, paint);
canvas.drawLine(
0
,
0
,
0
,
this
.getHeight()
-
1
, paint);
canvas.drawLine(
this
.getWidth()
-
1
,
0
,
this
.getWidth()
-
1
,
this
.getHeight()
-
1
, paint);
canvas.drawLine(
0
,
this
.getHeight()
-
1
,
this
.getWidth()
-
1
,
this
.getHeight()
-
1
, paint);
}
public
BorderTextView(Context context, AttributeSet attrs)
{
super
(context, attrs);
}
}
注意:如果想让TextView透明,也就是 将TextView的父视图的背景色作为TextView组件的背景色,如图2所示的第3个TextView组件,需要制作带边框的透明png图像(除了边框,图像的其他部分都是透明的),然后再生成9-patch格式的图像。