2016-07-18 14 views
0

Wie auf Leinwand zwei Texte mit relativer Positionierung zu zeichnen? Beispiel:Android Leinwand zeichnen

User: John Doe 
Status: foreigner 

-Code verwendet produziert Text "ein auf der anderen" Ausgabe:

Canvas canvas = page.getCanvas(); 
    int titleBaseLine = 72; 
    int leftMargin = 54; 
    Paint paint = new Paint(); 
    paint.setColor(Color.BLACK); 
    paint.setTextSize(40); 
    canvas.drawText(user, leftMargin, titleBaseLine, paint); 
    canvas.drawText(userName, leftMargin, titleBaseLine, paint); 
+0

"Relative Positionierung" ist irgendwie sinnlos, ohne eine bessere Beschreibung . Wie auch immer, der Grund, warum sie übereinander zeichnen, ist, dass du beiden sagst, dass sie am selben Ort zeichnen sollen. Haben Sie die Dokumente für die [Canvas # drawText() 'Methode] gelesen? (Https://developer.android.com/reference/android/graphics/Canvas.html#drawText (java.lang.String,% 20float,% 20float,% 20android.graphics.Paint)) verwenden Sie? –

+1

Bessere Beschreibung ??? Ich habe ein Beispiel gegeben ... Hast du es angeschaut? – TeodorKolev

+0

Wir haben keine Möglichkeit zu wissen, wie sich das auf Ihren Code bezieht. Worüber redest du gerade? Die zwei getrennten Linien? Der Doppelpunkt auf jeder einzelnen Zeile? Im Beispiel 'drawText()' Aufrufe haben Sie keine Werte für die 'Zeichenketten' angegeben. –

Antwort

0

Schluss Antwort:

int titleBaseLine = 60; 
int leftMargin = 20; 
Paint paint = new Paint(); 
paint.setColor(Color.BLACK); 
paint.setTextSize(40); 
Paint paintBold = new Paint();   
paintBold.setTypeface(Typeface.create(Typeface.DEFAULT,Typeface.BOLD)); 
paintBold.setColor(Color.BLACK); 
paintBold.setTextSize(40); 

canvas.drawText(userText, leftMargin + leftMargin, titleBaseLine, paintBold); 
canvas.drawText(username, leftMargin + paintBold.measureText(userText) + leftMargin + 10, titleBaseLine, paint); 
canvas.drawText(statusText, leftMargin + leftMargin, titleBaseLine * 2, paintBold); 
canvas.drawText(statusName, leftMargin + paintBold.measureText(statusText) + leftMargin + 10, titleBaseLine * 2, paint);