Android-Zeichenfläche drawText y-Position des Texts

Ich benutze eine Leinwand, um ein Drawable mit etwas Hintergrund und etwas Text zu erstellen. Das Drawable wird als Verbindung verwendet, die in einem EditText gezeichnet werden kann.

Der Text wird über drawText () auf der Zeichenfläche gezeichnet, aber ich habe in einigen Fällen ein Problem mit der y-Position des gezeichneten Texts. In diesen Fällen werden Teile einiger Zeichen abgeschnitten (siehe Bildlinks).

Zeichen ohne Positionierungsproblem:

http://i50.tinypic.com/zkpu1l.jpg

Zeichen mit Positionierungsproblemen, Text enthält 'g', 'j', 'q' usw .:

http://i45.tinypic.com/vrqxja.jpg

Unten finden Sie ein Code-Snippet, um das Problem zu reproduzieren.

Weiß irgendein Experte, wie man den richtigen Versatz für die y-Position bestimmt?

public void writeTestBitmap(String text, String fileName) {
   // font size
   float fontSize = new EditText(this.getContext()).getTextSize();
   fontSize+=fontSize*0.2f;
   // paint to write text with
   Paint paint = new Paint(); 
   paint.setStyle(Style.FILL);  
   paint.setColor(Color.DKGRAY);
   paint.setAntiAlias(true);
   paint.setTypeface(Typeface.SERIF);
   paint.setTextSize((int)fontSize);
   // min. rect of text
   Rect textBounds = new Rect();
   paint.getTextBounds(text, 0, text.length(), textBounds);
   // create bitmap for text
   Bitmap bm = Bitmap.createBitmap(textBounds.width(), textBounds.height(), Bitmap.Config.ARGB_8888);
   // canvas
   Canvas canvas = new Canvas(bm);
   canvas.drawARGB(255, 0, 255, 0);// for visualization
   // y = ?
   canvas.drawText(text, 0, textBounds.height(), paint);

   try {
      FileOutputStream out = new FileOutputStream(fileName);
      bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
   } catch (Exception e) {
      e.printStackTrace();
   }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage