android 為TextView新增邊框
阿新 • • 發佈:2019-01-07
今天需要在TextView上面新增一個邊框,但是TextView本身不支援邊框,所以只能採用其他方式,在網上查詢了一下,主要有三種方式可以實現1.帶有邊框的透明圖片2.使用xml的shape設定3繼承TextView覆寫onDraw方法。
方法一:
帶有透明圖片的背景圖,這個沒有什麼好將的,自己製作一個就行 ,然後設定background就可以了
方法二:
通過shape來設定背景圖片
首先一個textview_border.xml檔案放在drawable資料夾裡面
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <stroke android:width="1dip" android:color="#4fa5d5"/> </shape>
為要新增邊框的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佈局內容如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="120dp" android:layout_height="80dp" android:background="@drawable/textview_border" android:text="方法二" android:textColor="#FF000000" android:id="@+id/test" android:gravity="center" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:layout_centerHorizontal="true" /> <com.example.test.BorderTextView android:layout_width="120dp" android:layout_height="80dp" android:text="方法三" android:id="@+id/test3" android:gravity="center" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp" android:layout_centerHorizontal="true" ></com.example.test.BorderTextView> </RelativeLayout>