1

我正在设计一个显示表达式的自定义视图(您可以将其视为复杂的 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(). 有没有办法在不指定边界的情况下创建画布,然后将其切割成合适的大小?我不想先执行该过程以找出我需要的宽度,然后再次运行它以创建正确大小的视图。

任何建议,将不胜感激。

4

1 回答 1

1

使用ViewsonSizeChanged回调来创建和填充缓冲区。

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

于 2013-10-18T20:53:55.750 回答