给TextView加个边框

如下的边框:


方法有三个(这三个方法按难度从低到高来排序的):

1:给TextView一个背景,这个背景就是有边框的。

2:定义一个xml文件,在控件中通过background引用:

如下在drawable下定义一个xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!--门店新客的边框-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
    <stroke android:width="1dp" android:color="#64B847" />
    <corners android:radius="2dp"/>
</shape>

在控件中引用如下:

<TextView
    android:layout_width="33dp"
    android:layout_height="15dp"
    android:text="限新客"
    android:textColor="@color/newCustomerLimit"
    android:textSize="10dp"
    android:gravity="center"
    android:background="@drawable/new_customer"/>

3:自己定义一个自定义控件,在onDraw事件方法中画边框,这个知识点要求较高:

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);
    }
}
这样就完成了我们想要的了,难度成阶梯。

猜你喜欢

转载自blog.csdn.net/qq_42618969/article/details/80944288