2010-10-25 37 views
6

大家好:我正在寫一個繼承自TextView的類,並覆蓋它的onDraw()方法,但在該方法中,我調用的canvas.drawText()沒有似乎有效,代碼如下:爲什麼我調用Canvas.drawText()只是不工作

protected void onDraw(Canvas canvas) { 
    // super.onDraw(canvas); 
    Paint paint = new Paint(); 
    paint.setColor(android.graphics.Color.WHITE); 
    paint.setTextSize(20); 

    String text = "hello"; 
    canvas.drawText(text, 0, 0, paint); 
} 
+0

@bemace,它有什麼作用?這應該在左上角畫出你好。它會崩潰嗎?它沒有做任何事情嗎? textView的原始行爲是否接管?你如何在佈局中使用重寫的TextView? – 2010-10-25 06:04:05

+0

@Greg - 我剛剛清理了代碼格式,user486005提出了問題 – 2010-10-25 16:39:27

回答

18

它沒有繪圖,因爲文本座標是左下角。由於您試圖在0,0上繪製,它將在屏幕上方繪製。

嘗試改變最後一行:

canvas.drawText(text, 0, 20, paint); 
+0

@ user486005在測試繪圖時,最好先嚐試繪製已知點(如100,100)以便調試,然後擔心放置。你會意識到你的問題是採用這種方法在屏幕上繪製文本。只是一個想法。 – 2012-10-17 16:47:17

+3

爲什麼世界上的座標是從左下角開始的?它一直是左上角! – 2013-02-14 14:10:01

+0

至少他們可以在文檔中提到這種差異! – 2013-02-14 14:11:33

-1

很好的建議各地,偉大的工作傢伙還真。下一次,如果你在評論中詢問這個人或者是否在完全顯而易見的時候嘗試了這個問題,那麼這個問題會很好。你真的認爲第二個他得到了一個沒有工作的點,他只是直接進入Stack Overflow而沒有做實驗?

我確實有一個備選建議,它足夠瘋狂地基於整個問題,而不僅僅是沒有太多實際知識的情況下可以回答的部分。

我會建議您在Canvas上嘗試您的drawText調用,而不是在TextView子類中,因爲它不會被TextView中的幾百行代碼覆蓋,從而管理它的可繪製狀態。

相關問題