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();
}
}