概述
import android.content.Context;
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 com.xvli.cit.R;
/**
* @param
* @Comments : 文字描边
* @Author : Lampo
* @CreateDate : 2018/11/21 15:24
* @ModifiedBy : Lampo
* @ModifiedDate : 2018/11/21 15:24
* @Modified :* StrokeTextView的目标是给文字描边
* 实现方法是两个TextView叠加,只有描边的TextView为底,实体TextView叠加在上面
* 看上去文字就有个不同颜色的边框了
*/
public class StrokeTextView extends android.support.v7.widget.AppCompatTextView {
private TextView borderText = null;///用于描边的TextView
public StrokeTextView(Context context) {
super(context);
borderText = new TextView(context);
init();
}
public StrokeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
borderText = new TextView(context,attrs);
init();
}
public StrokeTextView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
borderText = new TextView(context,attrs,defStyle);
init();
}
public void init(){
TextPaint tp1 = borderText.getPaint();
tp1.setStrokeWidth(4); //设置描边宽度
tp1.setStyle(Paint.Style.STROKE); //对文字只描边
borderText.setTextColor(getResources().getColor(R.color.generic_white)); //设置描边颜色
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 TextView文字描边的全部内容,希望文章能够帮你解决Android TextView文字描边所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复