Android 不同字体大小的画布
我在Android中使用以下函数将字符串转换为位图:Android 不同字体大小的画布,android,android-canvas,staticlayout,Android,Android Canvas,Staticlayout,我在Android中使用以下函数将字符串转换为位图: static public Bitmap createBitmapFromText(String printText, int textSize, int printWidth, Typeface typeface) { Paint paint = new Paint(); Bitmap bitmap; Canvas canvas; paint.setTextSize(textSize); pain
static public Bitmap createBitmapFromText(String printText, int textSize, int printWidth, Typeface typeface) {
Paint paint = new Paint();
Bitmap bitmap;
Canvas canvas;
paint.setTextSize(textSize);
paint.setTypeface(typeface);
paint.getTextBounds(printText, 0, printText.length(), new Rect());
TextPaint textPaint = new TextPaint(paint);
android.text.StaticLayout staticLayout = new StaticLayout(printText, textPaint, printWidth, Layout.Alignment.ALIGN_NORMAL, 1, 0, false);
// Create bitmap
bitmap = Bitmap.createBitmap(staticLayout.getWidth(), staticLayout.getHeight(), Bitmap.Config.ARGB_8888);
// Create canvas
canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.translate(0, 0);
staticLayout.draw(canvas);
return bitmap;
}
我想对其进行转换,以便创建具有不同字体样式的位图,如下所示:
static public Bitmap createBitmapFromText(String[] texts, int[] textSizes, int printWidth, Typeface typeface) {
}
有没有办法将多个具有不同样式的TextPaint对象附加到StaticLayout中
结果会是这样
#发票POS{
衬垫:2mm;
保证金:0自动;
宽度:44毫米;
背景:#FFF;
h1{
字号:1.5em;
颜色:#222;
}
h2{字体大小:.9em;}
h3{
字体大小:1.2米;
字体大小:300;
线高:2米;
}
p{
字体大小:.7em;
颜色:#666;
线高:1.2米;
}
#top、#mid、#bot{/*以“col-”作为所有id的目标*/
边框底部:1px实心#EEE;
}
#顶部{最小高度:100px;}
#中{最小高度:80px;}
#机器人{最小高度:50px;}
#顶部。标志{
//浮动:左;
高度:60px;
宽度:60px;
背景:url(http://michaeltruong.ca/images/logo1.png)不重复;
背景尺寸:60px 60px;
}
.clientlogo{
浮动:左;
高度:60px;
宽度:60px;
背景:url(http://michaeltruong.ca/images/client.jpg)不重复;
背景尺寸:60px 60px;
边界半径:50px;
}
.info{
显示:块;
//浮动:左;
左边距:0;
}
.头衔{
浮动:对;
}
.title p{文本对齐:右;}
桌子{
宽度:100%;
边界塌陷:塌陷;
}
运输署{
//填充:5px0 5px15px;
//边框:1px实心#EEE
}
.表格标题{
//填充物:5px;
字体大小:.5em;
背景:#EEE;
}
.service{边框底部:1px实心#EEE;}
.项目{宽度:24mm;}
.itemtext{字体大小:.5em;}
#法律术语{
边缘顶部:5mm;
}
}
联系方式
地址:纽约州斯特里特市,邮编:0000
电邮:JohnDoe@gmail.com
电话:555-555-5555
项目
数量
小计
通信
5
375.00美元
资产收集
3
225.00美元
设计开发
5
375.00美元
动画
20
1500.00美元
动画版本
10
750.00美元
税
$419.25
全部的
$3,644.25
感谢您的业务预计在31天内付款;请在此时间内处理此发票。逾期发票每月收取5%的利息。
noStaticLayout
只需要一个TextPaint
,因此我必须创建多个StaticLayout,每行文本一个?不太可能:您必须使用span,请参见SpannableStringBuilder
我不太明白如何在这里使用SpannableString。使用TextPaint,如果画布中呈现的文本达到所提供宽度的末端,则会自动对其进行包装。SpannableString会怎么做?我应该测量文本的宽度吗?好的,那么你想画什么文本?只是文字大小不同?如果是这样,请使用RelativeSizeSpan
/AbsoluteSizeSpan
然后使用其中一个span调用SpannableStringBuilder.setSpan