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));
那么,现在的问题是:有一个已知的解决办法吗?我的简单目标是用斜体来画一些词.
发布于 2012-06-05 16:05:38
在经历了同样的困难之后,我在TextView
源代码中找到了解决方案。试试这个:
paint.setTextSkewX(-0.25f);
发布于 2012-05-12 10:54:48
我也有同样的问题。看起来并不是所有的android字体都支持斜体风格。试一试,我不是为自己工作的:
paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.ITALIC));
用衬线就行了。默认情况下,单空间,SANS_SERIF采用这种样式。
我说的是API 10。
发布于 2015-10-06 15:20:15
为了获得不支持默认字体的设备的斜体模式,我们应该使用setTextSkewX方法。然而,在应用之前,我们必须确保不支持斜体模式。我们通过创建一个时态TextView对象并在两种模式(正常和斜体)中测量它的宽度来实现它。如果它们的宽度相同,则表示不支持斜体模式。
请看另一个问题中提出的解决方案:Samsung devices supporting setTypeface(Typeface.Italic)?
https://stackoverflow.com/questions/6124440
复制相似问题