Android Paint.setTypeface不适用于斜体

|| 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));
现在,问题来了:是否有已知的解决方法?我的简单目标是画一些斜体字。     
已邀请:
在经历了同样的困难之后,我通过在“ 1”源代码中闲逛找到了解决方案。尝试这个:
paint.setTextSkewX(-0.25f);
    
我也有同样的问题。似乎并非所有的android字体都支持ITALIC样式。尝试以下操作,我为我工作了:
paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.ITALIC));
仅适用于SERIF。 DEFAULT,MONOSPACE和SANS_SERIF会忽略此样式。 附言我说的是API 10。     
为了获得不支持默认字体的设备的斜体模式,我们应该使用setTextSkewX方法。但是,在应用它之前,我们必须确保不支持斜体模式。我们通过创建一个临时TextView对象并在两种模式(NORMAL和ITALIC)下测量其宽度来实现。如果宽度相同,则表示不支持ITALIC模式。 请看看另一个问题提出的解决方案:支持setTypeface(Typeface.Italic)的三星设备吗?     

要回复问题请先登录注册