android 为TextView添加边框

今天需要在TextView上面添加一个边框,但是TextView本身不支持边框,所以只能采用其他方式,在网上查询了一下,主要有三种方式可以实现1.带有边框的透明图片2.使用xml的shape设置3继承TextView覆写onDraw方法。

方法一:

带有透明图片的背景图,这个没有什么好将的,自己制作一个就行 ,然后设置background就可以了

方法二:

通过shape来设置背景图片

首先一个textview_border.xml文件放在drawable文件夹里面



   
   

为要添加边框的TextView添加一个background  

android:background="@drawable/textview_border"  

效果图片如下:


方法三:

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

package com.example.test;

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

@SuppressLint("DrawAllocation")
public class BorderTextView extends TextView{

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

效果图如下:



使用的Xml布局内容如下:



    
    

    

你可能感兴趣的:(Android开发)