2017-07-11 3 views
0

Im kämpfen, um eine Lösung dieses Problem zu finden. Grundsätzlich habe ich 3 separate Strings, die auf der Leinwand in verschiedenen Farben gezeichnet werden. Ie:Android, separate drawtext auf Leinwand nebeneinander

Canvas.drawtext(text, x, y, mpaint1); 
Canvas.drawtext(text2, x, y, mpaint2); 
Canvas.drawtext(text3, x, y, mpaint3); 

Im Moment sind sie nebeneinander mit der x-Achse positioniert, mit Px. Dies ist eine Lösung, die aber in der realen Welt nicht funktioniert. Höhere dpi verringern den Px.

Ich habe versucht, Html funktioniert nicht, ich habe versucht, SpannableString, aber ich kann nicht einmal Android Studio zu einem anerkannten SpannableString bekommen. Ich kann auch nicht scheinen Java.awt.graphics zu importieren?

Added note Ich erweitere canvaswatchfaveservice

Jede Hilfe wäre sehr geschätzt. Vielen Dank.

+0

Versuchen Sie, diese 'canvas.drawText (Text, (int) TypedValue.applyDimension (TypedValue.COMPLEX_UNIT_DIP, x, GetResources() getDisplayMetrics()), y, mpaint1.);' –

+0

Danke für die Antwort. Ich verstehe, aber muss ich typedvalue aufrufen oder importieren? Wie es nur rot atm zeigt. Erkennt es nicht an. –

+0

Ja, Sie müssen es importieren. Platzieren Sie den Cursor auf TypedValue und 'Lalt + Enter' gibt Ihnen die Möglichkeit zu importieren. –

Antwort

0

Ich habe andere Lösung für Ihr Problem.

Sie sollten eine LinerarLayout mit vertikaler Ausrichtung mit 3 TextView nehmen und dann setzen Sie Ihren Text in TextView und dann erhalten Sie Bitmap-Formular LinerarLayout und zeichnen Sie dieses Bitmap auf Leinwand.

Auch auf diese Weise haben Sie die Freiheit, Hintergrundfarbe, Textfarbe, Schriftstil und alle anderen Eigenschaften von TextView festzulegen.

public static Bitmap loadBitmapFromView(View v) { 
    Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
    Canvas c = new Canvas(b); 
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
    v.draw(c); 
    return b; 
} 
+0

Ich bin mir nicht sicher, was du meinst? Aber ich verbinde nicht mit irgendeinem XML. Alles ist auf Leinwand gezeichnet? –