2012-03-09 150 views
1

我有一个旋转的TextView类,它的画布我在的onDraw方法旋转:是否可以在Android中扩展Canvas?

@Override 
protected void onDraw(final Canvas canvas) { 
    canvas.save(); 
    canvas.rotate(-90); 
    canvas.translate(-getHeight(), 0); 
    super.onDraw(canvas); 
    canvas.restore(); 
} 

TextView的被正确地定位和旋转,但文字似乎得到剪掉:

rotated text view with clipped off text

如何正确地扩展Canvas,使TextView不会将文本截断?

注意高亮区域是super.onDraw(canvas)前右绘制的canvas的剪辑范围的结果,所以我知道剪辑区域是正确的。

+0

你肯定是有过错的印刷品吗? – 2012-03-10 01:54:37

+0

不是真的,@JesseJ,从探索 - 它看起来可能TextView忽略其画布的大小,只使用其布局大小。有什么建议么? – Warlax 2012-03-12 12:35:32

+0

不太确定。我不太确定它为什么会被切断。用TextView做什么,像旋转它? – 2012-03-12 20:16:15

回答

0

当然,文本被剪掉! 如果旋转画布,则只需旋转View中的图形,而边界(不依赖于Canvas,但它们由View定义)不会旋转。
因此,你必须旋转整个View,就像下面的代码:

this.setRotation(-90); // 'this' is your view.