好吧,这让我发疯了。我正在使用画布在我的应用程序中绘制仪表。它还在哈希标记上绘制数字,并在仪表上绘制一些水平文本。这一切都适用于所有版本的 Android 到 4.2。在 4.2 中,它只从它应该写的文本中绘制一个字符(看起来是中间字符)。例如,如果我的文本显示为 12345,它只写 3。如果它是一个两位数,它只绘制第一个数字。我在 4.2 模拟器和带有 4.2.1 的 Nexus 4 上看到了这种行为。我阅读了有关默认情况下打开硬件加速的所有信息,并且它会导致某些 Paint 和 Canvas 功能出现问题。我已插入代码以关闭 drawText 调用的硬件加速,但它没有帮助。
这是我的油漆代码:
titlePaint1 = new Paint();
titlePaint1.setColor(Color.WHITE);
titlePaint1.setAntiAlias(true);
titlePaint1.setTypeface(Typeface.DEFAULT_BOLD);
titlePaint1.setTextAlign(Paint.Align.CENTER);
titlePaint1.setTextSize(0.085f);
这是绘制文本所调用的方法:
@SuppressLint("NewApi")
private void drawTitle1(Canvas canvas) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
setLayerType(View.LAYER_TYPE_SOFTWARE, titlePaint1);
canvas.drawText(title1, 0.5f, 0.72f, titlePaint1);
}
我将有效的画布传递给它,并且宽度和高度都很完美。在该画布上绘制的其他所有内容都显示正常,并且在绘制仪表组件之前还有其他三个函数调用,如上面的那个。这只是drawText的问题。我知道这与 4.2 的变化有关,我认为这个 drawText 问题与硬件加速无关。我只能在 Google 上找到一些关于 4.2 版 Canvas 问题的结果,但没有什么能帮助我解决我的问题。有什么想法可以解决这个问题并使文本正确显示吗?