android 字体设置为中等粗细
Android TextView設置字體粗細只有三種狀態,textStyle取值只有bold、nomral、italic、客戶需求是字體是medium粗細,只因ios是有medium屬性,Android被要求要一樣;
要實現這種方式,我們可以換另外一種思想去做,既然沒有medium,那就改變Paint的寬度,也就是畫筆的筆跡寬度,等同于改變于字體的粗細程度,而且更具靈活性,可以自由來調控寬度大小;使用setStrokeWidth(num)方法即可
實現起來也及其簡單,如下:
單一實現為
TextView tvTitle = findViewById(R.id.title);
TextPaint? tp = tvTitle.getPaint();
tp.setStrokeWidth(1.0f);
tp.setStyle(Paint.Style.FILL_AND_STROKE);
setStrokeWidth()方法需要傳入一個float值,數值越大,字體越粗,0.0f表示常規畫筆的寬度,相當于默認情況。
全局實現為
繼承TextView即可,在onDraw方法里面調用setStrokeWidth()方法即可,寬度自由可控,代碼如下:
public class MediumBoldTextView extends TextView {private float mStrokeWidth = 0.9f;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);TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MediumBold_TextView,defStyleAttr,0);mStrokeWidth = array.getFloat(R.styleable.MediumBold_TextView_strokeWidth,mStrokeWidth);}@Overrideprotected void onDraw(Canvas canvas) {//獲取當前控件的畫筆TextPaint paint = getPaint();//設置畫筆的描邊寬度值paint.setStrokeWidth(mStrokeWidth);paint.setStyle(Paint.Style.FILL_AND_STROKE);super.onDraw(canvas);} }R.styleable.MediumBold_TextView在attrs.xml文件下:
這樣就可以直接在布局中使用了,然后通過設置strokeWidth即可自由改變寬度。
?
總結
以上是生活随笔為你收集整理的android 字体设置为中等粗细的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏测试常见bug
- 下一篇: luogu P3356 火星探险问题(网