微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Paint.setTypeface不适用于斜体

如何解决Android Paint.setTypeface不适用于斜体

|| Paint.setTypeface不适用于斜体,或者我正在以错误的方式进行操作。我可以创建普通,粗体,等宽和衬线文本,但不能创建斜体文本。它总是看起来很普通(或者在粗体-斜体的情况下看起来是粗体)。
    //This will appear monospace
    paint.setTypeface(Typeface.MONOSPACE);
    canvas.drawText(\"foo\",10,paint);

    //This will appear serif
    paint.setTypeface(Typeface.SERIF);
    canvas.drawText(\"foo\",paint);

    //This will appear bold
    paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
    canvas.drawText(\"foo\",paint);

    //This will NOT appear italic <===  PROBLEM
    paint.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
    canvas.drawText(\"foo\",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)的三星设备吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。