简书链接:androidtext转drawable做前景色
文章字数:48,阅读全文大约需要1分钟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  public static BitmapDrawable bitmapText2Drawable(Context context,String text,int fontSize,int textColor,int backcolor) {
// 创建一个 Paint 对象
Paint paint = new Paint();
paint.setColor(textColor);
paint.setAntiAlias(true);
paint.setTextSize(DensityUtil.sp2px(context,fontSize)); // 设置字体大小为 14sp

// 计算文本的宽度和高度
float textWidth = paint.measureText(text);
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
float textHeight = fontMetrics.bottom - fontMetrics.top;


int canvasWidth = (int) Math.ceil(textWidth);
int canvasHeight = (int) Math.ceil(textHeight);


Bitmap bitmap = Bitmap.createBitmap(canvasWidth, canvasHeight, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);
canvas.drawColor(backcolor);

float x = 0;
float y = -fontMetrics.top;
canvas.drawText(text, x, y, paint);

BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), bitmap);
return bitmapDrawable;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static BitmapDrawable bitmapText2Drawable(Context context, String text, int fontSize, int textColor, int backcolor, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) {
Paint paint = new Paint();
paint.setTextSize(fontSize);
paint.setColor(textColor);
paint.setAntiAlias(true);
paint.setTextAlign(Paint.Align.LEFT);
int width = (int) paint.measureText(text);
int height = (int) (paint.descent() - paint.ascent());
Bitmap bitmap = Bitmap.createBitmap(width + paddingLeft + paddingRight, height + paddingTop + paddingBottom, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(backcolor);
canvas.drawText(text, paddingLeft, height - paint.descent() + paddingTop, paint);
return new BitmapDrawable(context.getResources(), bitmap);
}