2013-02-28 16 views
6

In questa documentazione metodo è scritto che:In che modo Canvas.drawText() disegna davvero il testo?

x The x-coordinate of origin for where to draw the text 
y The y-coordinate of origin for where to draw the text 

Ma non dice nulla circa la direzione di questo testo è tratto. So che il testo è tratto dalle origini, ma quando do i seguenti argomenti, il mio testo viene tagliato:

canvas.drawText(displayText, 0, canvas.getHeight(), textPaint); 

Inoltre, presumo sto usando Align.LEFT (il che significa che il testo è tratto a destra dell'origine x, y)

Quindi quali dovrebbero essere gli argomenti corretti (supponendo che non voglia utilizzare numeri fissi)?

+0

forse questo è quello che stai cercando (controllare il commento sulla risposta). http://stackoverflow.com/questions/10606410/android-canvas-drawtext-y-position-of-text –

+0

come viene tagliato il testo? Qualche testo mostra anche? – Barney

+0

Se provate ad impostare il valore y su canvas.getHeight()/2, mostra correttamente il testo che appare nel mezzo? Inoltre, dovresti dire cosa vuoi ottenere concretamente. – Barney

risposta

2

Questo è quello che alla fine usato:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    if (textAlignment == Align.CENTER) { 
     canvas.drawText(displayText, canvas.getWidth()/2, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.RIGHT) { 
     canvas.drawText(displayText, canvas.getWidth()-TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.LEFT) { 
     canvas.drawText(displayText, TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    //canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p); 
} 

due commenti:

  1. TEXT_PADDING è una dimensione dp converto di pixel in fase di esecuzione (nel mio caso 3DP).
  2. È possibile annullare il commento dell'ultima riga per disegnare il retto attorno alla tela per il debug.
2

forse è possibile utilizzare il seguente frammento per vedere se il suo lavoro o no:

int width = this.getMeasuredWidth()/2; 
int height = this.getMeasuredHeight()/2; 
textPaint.setTextAlign(Align.LEFT); 
canvas.drawText(displayText, width, height, textPaint); 

La larghezza e l'altezza sono solo calcolati arbitrariamente nel mio caso.

+0

Si taglia, per favore vedi il mio commento .. –

Problemi correlati