package com.superx.boost.clean.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.superx.boost.clean.R;
/**
* author : jian11058
* time : 2022/1/7
* desc :
*/
public class StrokeTextView extends androidx.appcompat.widget.AppCompatTextView {
private TextView borderText = null;///用于描边的TextView
public StrokeTextView(@NonNull Context context) {
super(context);
// borderText = new TextView(context);
// init();
}
public StrokeTextView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
borderText = new TextView(context,attrs);
init();
}
public StrokeTextView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// borderText = new TextView(context,attrs,defStyleAttr);
// init();
}
private void init(){
TextPaint tp1 = borderText.getPaint();
tp1.setStrokeWidth(4); //设置描边宽度
tp1.setStyle(Paint.Style.STROKE); //对文字只描边
borderText.setTextColor(getResources().getColor(R.color.red3)); //设置描边颜色
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);
}
}
Android 描边文字,文字描边自定义view
猜你喜欢
转载自blog.csdn.net/jian11058/article/details/122361343
今日推荐
周排行