Android - 自定义视图和画布大小 - 鸡和蛋的概率

时间:2013-10-17 19:44:34

标签: android android-canvas

我正在设计一个显示表达式的自定义视图(您可以将其视为复杂的TextView)。

随着表达式的增长,我希望我的自定义视图能够扩展以适应它(就像wrap_content TextView一样)。

当视图内容发生变化时,我缓冲了一个稍后由onDraw()

绘制的画布

使用

完成缓冲
Bitmap canvasBitmap = Bitmap.createBitmap(width, height , Config.RGB);
Canvas canvas = new Canvas(canvasBitmap);
canvas.drawText(pos,text, paint);
pos += paint.MesureText(text);
// and so on...
...
...

只有在这个过程结束时,我才知道我真正需要的画布宽度 - pos的值,但我需要在Bitmap.createBitmap()中进行计算之前。 有没有办法创建一个画布而不指定它的边界,然后将其剪切到合适的大小?我不想先做这个过程,找出我需要的宽度,然后再次运行它来创建一个合适大小的视图。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用Views的{​​{1}}回调来创建和填充缓冲区。

这在热切缓冲数据和仅在视图具有适当大小时将其推迟之间提供了良好的平衡。