TextView 文字描邊
阿新 • • 發佈:2019-02-07
在不是很明顯的描邊 可以使用 陰影來互動如下:
android:shadowColor 陰影顏色
android:shadowDx 陰影的水平偏移量
android:shadowDy 陰影的垂直偏移量
android:shadowRadius 陰影的範圍
真正的描邊方法如下:
產考:
實現方法是兩個TextView疊加,只有描邊的TextView為底,實體TextView疊加在上面
public class MyTextView2 extends TextView { private TextView borderText = null;///用於描邊的TextView public MyTextView2(Context context) { super(context); borderText = new TextView(context); init(); } public MyTextView2(Context context, AttributeSet attrs) { super(context, attrs); borderText = new TextView(context, attrs); init(); } public MyTextView2(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); borderText = new TextView(context, attrs, defStyleAttr); init(); } public void init() { TextPaint tp1 = borderText.getPaint(); tp1.setStrokeWidth(1); //設定描邊寬度 tp1.setStyle(Paint.Style.STROKE); //對文字只描邊 borderText.setTextColor(Color.GREEN); //設定描邊顏色 borderText.setGravity(getGravity()); } @Override public void setLayoutParams(ViewGroup.LayoutParams params) { super.setLayoutParams(params); borderText.setLayoutParams(params); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { CharSequence tt = borderText.getText(); //兩個TextView上的文字必須一致 if (tt == null || !tt.equals(this.getText())) { borderText.setText(getText()); this.postInvalidate(); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); borderText.measure(widthMeasureSpec, heightMeasureSpec); } protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); borderText.layout(left, top, right, bottom); } @Override protected void onDraw(Canvas canvas) { borderText.draw(canvas); super.onDraw(canvas); } }
產考: