2010-10-25 18 views
6

Hola a todos: Escribo una clase que hereda de TextView y anulo su método onDraw(), pero en el método, mi invocación de canvas.drawText() no parece funcionar, el código simplemente, como a continuación:por qué mi invocación de Canvas.drawText() simplemente no funciona

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, ¿qué hace? Esto debería dibujar hola en la esquina superior izquierda. ¿Se cuelga? ¿No hace nada? ¿El comportamiento original de textView toma el control? ¿Cómo está usando la TextView reemplazada en un diseño? –

+0

@Greg - Acabo de limpiar el formato del código, user486005 hizo la pregunta –

Respuesta

18

no está llegando nada porque las coordenadas de texto son parte inferior izquierda. Como está tratando de dibujar en 0,0, dibujará sobre la pantalla.

trate de cambiar la última línea a:

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

@ user486005 Al probar el dibujo, a menudo es mejor intentar y dibujar en puntos conocidos como 100,100 inicialmente para la depuración y luego preocuparse por la ubicación. Se habría dado cuenta de que su problema era que el texto salía de la pantalla teniendo este enfoque. Solo un pensamiento. –

+3

¿Por qué en el mundo comenzarían las coordenadas desde la esquina inferior izquierda? ¡Siempre ha sido arriba a la izquierda! –

+0

¡Al menos podrían mencionar esta diferencia en la documentación! –

-1

excelentes sugerencias de todo, buen trabajo chicos realmente. La próxima vez, sería bueno si le preguntas al chico en un comentario o algo, ya sea que haya intentado o no con el completamente obvio antes de publicarlo como respuesta. ¿De verdad crees que en el momento en que llegó a un punto que no funcionaba, vino directamente a Stack Overflow sin experimentar?

Tengo una sugerencia alternativa, que lo suficientemente loco se basa en toda la pregunta y no solo en la parte que podría responderse sin mucho conocimiento real.

Recomendaría probar su llamada de drawText en un lienzo que no está en una subclase TextView ya que de esa manera no será anulado por los cientos de líneas de código en TextView que administran su estado dibujable.

Cuestiones relacionadas