Nexus 7上的Android 4.2:canvas.drawText()无法正常工作

我的应用程序面临严重问题,在Google Play上发布,显然在所有版本的 Android上都运行良好,除了> 4.0.

这是我的Android 4.0 HTC手机的截图:

这就是我在Nexus 7,Android 4.2.1上获得的(在模拟器中的相同行为):

我看到使用canvas.drawText()绘制的每个文本都有相同的行为

用于绘制文本的Paint是:

paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(color); //some color
paint.setTextSize(size); //some size
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
paint.setTextAlign(Align.CENTER);

在logCat(4.2.1模拟器)中,我看到了很多

12-18 20:42:21.096: W/Trace(276): Unexpected value from nativeGetEnabledTags: 0

我在清单中使用这些设置:

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

解决方法

经过大量的谷歌搜索,我回答了自己的问题……

诀窍在于使用setLinearText(true)作为用于绘制文本的Paint对象.现在,一切看起来都很棒.

paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(color);
paint.setTextSize(size);
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
paint.setTextAlign(Align.CENTER);
paint.setLinearText(true);

这里保存我的一天的链接

http://gc.codehum.com/p/android/issues/detail?id=39755

我希望它可以帮助一些人.

该文本尚未最佳呈现:

编辑(14/01/2013)

我仍然面临着一个kering问题(仅限于4.2.1).请在这里查看我的其他问题:

Android 4.2.1 wrong character kerning (spacing)

编辑(05/02/2013)

我看到另一个项目有同样的问题.请看下面的链接

http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/

如果您在Nexus 4.2.1(或模拟器Android 4.2)上运行示例,您将获得相同的“奇怪”文本…

编辑(20/02/2013)

找到一个不使用setLinearText(true)的解决方法,请看这里:

Android 4.2.1 wrong character kerning (spacing)

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...