Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不同字体大小的画布_Android_Android Canvas_Staticlayout - Fatal编程技术网

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

我在Android中使用以下函数将字符串转换为位图:

 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%的利息。


no
StaticLayout
只需要一个
TextPaint
,因此我必须创建多个StaticLayout,每行文本一个?不太可能:您必须使用span,请参见
SpannableStringBuilder
我不太明白如何在这里使用SpannableString。使用TextPaint,如果画布中呈现的文本达到所提供宽度的末端,则会自动对其进行包装。SpannableString会怎么做?我应该测量文本的宽度吗?好的,那么你想画什么文本?只是文字大小不同?如果是这样,请使用
RelativeSizeSpan
/
AbsoluteSizeSpan
然后使用其中一个span调用
SpannableStringBuilder.setSpan