java drawScaledText()不适用于righttoleft语言
我试图在从右向左的语言(希伯来语)上使用drawScaledText(),它会翻转字母,如this link所示
下面是确切的代码:
@Override
protected void onDraw(Canvas canvas) {
TextPaint paint = getPaint();
paint.setColor(getCurrentTextColor());
paint.drawableState = getDrawableState();
mViewWidth = getMeasuredWidth();
String text = (String) getText();
mLineY = 0;
mLineY += getTextSize();
Layout layout = getLayout();
for (int i = 0; i < layout.getLineCount(); i++) {
int lineStart = layout.getLineStart(i);
int lineEnd = layout.getLineEnd(i);
String line = text.substring(lineStart, lineEnd);
float width = StaticLayout.getDesiredWidth(text, lineStart, lineEnd, getPaint());
if (needScale(line) && i != layout.getLineCount()-1 ) {
//THIS IS THE LINE FLIPS RTL TEXT
drawScaledText(canvas, lineStart, line, width);
} else {
//IF I BYPASS THE ABOVE IF STATEMENT, THIS LINE DOESN'T FLIP TEXT
canvas.drawText(line, 0, mLineY, paint);
}
mLineY += getLineHeight();
}
}
这段代码证明了文本的正确性,来自this repo
这是为什么/我怎样才能避开这件事?我在某个地方发现,可以用drawTextOnPath()
代替drawScaledText()
,画一条从右开始到左的线
(Android canvas drawText from right to left)
不幸的是,这个问题的答案并没有真正解释这是什么意思,我也没能让它起作用
TL;DR:我想画对正的RTL文本drawScaledText()
出于某种原因翻转文本。有没有其他方法可以在指定范围内绘制文本
共 (0) 个答案