我的应用程序面临严重问题,在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)的解决方法,请看这里: