一次偶然的机会发现了一个东西,在Android里面默认的textStyle只有加粗和不加粗,但是很多UI的设计稿是以IOS做的会有Medium中等加粗这个概念,查了一遍资料没有好用的。不过有看到说
//获取当前控件的画笔 TextPaint paint = tv.getPaint(); //设置画笔的描边宽度值 paint.setStrokeWidth(2); paint.setStyle(Paint.Style.FILL_AND_STROKE);
这样写的可以解决,我去试过不行。然后接着找资料,还是没找到,我只得回头来看这个是怎么回事
研究之后发现
paint.setStrokeWidth(2); 它的数值是 0-2(正常情况下) 0是普通字体 2是bold字体
所以我们开发中要使用中等字体 写0-2直接的数字就好。
不过不知道是我的错觉么,我最开始也是试过的发现不行,但是后面我试又可以了,不过我把参数写成 就可以
paint.setStrokeWidth(1.0f); float类型
如果只是但个地方使用
TextView tv3 = findViewById(R.id.tv3); TextPaint paint = tv3.getPaint(); paint.setStrokeWidth(1.0f); paint.setStyle(Paint.Style.FILL_AND_STROKE);
如果是多个地方要使用 ,可以这样写
public class MediumBoldTextView extends TextView { public MediumBoldTextView(Context context) { super(context); } public MediumBoldTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public MediumBoldTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { //获取当前控件的画笔 TextPaint paint = getPaint(); //设置画笔的描边宽度值 paint.setStrokeWidth(1.0f); paint.setStyle(Paint.Style.FILL_AND_STROKE); super.onDraw(canvas); } }
这个范围值可以自己去控制