Paint.setTypeface不适用于斜体或我做错了。我可以创建普通,粗体,等宽和衬线文本,但我不能创建斜体文本。它总是看起来很正常(或者在粗体斜体的情况下看起来很粗体)。
//This will appear monospace
paint.setTypeface(Typeface.MONOSPACE);
canvas.drawText("foo", 10, 10, paint);
//This will appear serif
paint.setTypeface(Typeface.SERIF);
canvas.drawText("foo", 10, 10, paint);
//This will appear bold
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
canvas.drawText("foo", 10, 10, paint);
//This will NOT appear italic <=== PROBLEM
paint.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
canvas.drawText("foo", 10, 10, paint);
// This isn't working either <=== PROBLEM
paint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC));
所以现在的问题是:有一个已知的解决方法吗?我的简单目标是用斜体样式绘制一些单词......
答案 0 :(得分:14)
遇到同样的困难之后,我在TextView
源代码中找到了解决办法。试试这个:
paint.setTextSkewX(-0.25f);
答案 1 :(得分:8)
我有同样的问题。看起来并非所有的android字体都支持ITALIC风格。试试下面,我为我工作:
paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.ITALIC));
使用SERIF工作正常。 DEFAULT,MONOSPACE,SANS_SERIF进入了这种风格。
P.S。我在谈论API 10。
答案 2 :(得分:1)
为了获得不支持默认字体的设备的斜体模式,我们应该使用setTextSkewX方法。但是,在应用它之前,我们必须确保不支持斜体模式。我们通过创建一个时间TextView对象并在两种模式(NORMAL和ITALIC)中测量其宽度来实现它。如果它们的宽度相同,则表示不支持ITALIC模式。
请查看另一个问题中提出的解决方案:Samsung devices supporting setTypeface(Typeface.Italic)?