Android 三角標籤(自定義Textview控制元件)
阿新 • • 發佈:2019-01-08
先來看一下效果
上程式碼
package com.zph.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.widget.TextView;
public class RotateTextView extends TextView{
public RotateTextView(Context context) { super(context); } public RotateTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { // 傾斜度45,上下左右居中 int w=getMeasuredWidth(); canvas.rotate(-45,w,w); // 繪製這個三角形,你可以繪製任意多邊形 Paint p1 = new Paint(); p1.setColor(Color.RED);// 設定紅色 p1.setStyle(Paint.Style.FILL); Path path = new Path(); path.moveTo((int)(w/3), (int)(w/3));// 此點為多邊形的起點 path.lineTo((int)(w*1.67), (int)(w/3)); path.lineTo(w, w); path.close(); // 使這些點構成封閉的多邊形 canvas.drawPath(path, p1); Paint p = new Paint(); p.setColor(Color.WHITE);// 設定白色 p.setTextSize((int)(w*0.23));//設定字型大小 canvas.drawText(text, (int)(w*0.66), (int)(w*0.60), p); super.onDraw(canvas); } /** 要顯示的文字 */ private String text="新標籤"; public void setText(String text) { this.text=text; invalidate();//重繪重新整理Textview內容 }
}
xml
<com.zph.view.RotateTextView
android:id="@+id/test_rt1"
android:layout_alignRight="@+id/img"
android:layout_alignBottom="@+id/img"
android:layout_width="288px"
android:layout_height="288px"/>
程式碼實現
RotateTextView rt; private void setTestRT(){ Log.i("TAG","RotateTextView"); rt= (RotateTextView) findViewById(R.id.test_rt1); rt.setText("求推薦"); //需要在自定義控制元件中重寫setext()要不然此處的setext()沒有效果 }