首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Paint.setTypeface不适用斜体字

Android Paint.setTypeface不适用斜体字
EN

Stack Overflow用户
提问于 2011-05-25 12:28:37
回答 3查看 14.5K关注 0票数 10

Paint.setTypeface不适合斜体字,或者我做错了事情。我可以创建普通的、粗体的、单空格的和衬线文本,但是我不能创建斜体文本。它看起来总是正常的(或者在粗体-斜体字的情况下,它看起来粗体)。

代码语言:javascript
运行
复制
    //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));

那么,现在的问题是:有一个已知的解决办法吗?我的简单目标是用斜体来画一些词.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-05 16:05:38

在经历了同样的困难之后,我在TextView源代码中找到了解决方案。试试这个:

代码语言:javascript
运行
复制
paint.setTextSkewX(-0.25f);
票数 14
EN

Stack Overflow用户

发布于 2012-05-12 10:54:48

我也有同样的问题。看起来并不是所有的android字体都支持斜体风格。试一试,我不是为自己工作的:

代码语言:javascript
运行
复制
paint.setTypeface(Typeface.create(Typeface.SERIF,Typeface.ITALIC));

用衬线就行了。默认情况下,单空间,SANS_SERIF采用这种样式。

我说的是API 10。

票数 8
EN

Stack Overflow用户

发布于 2015-10-06 15:20:15

为了获得不支持默认字体的设备的斜体模式,我们应该使用setTextSkewX方法。然而,在应用之前,我们必须确保不支持斜体模式。我们通过创建一个时态TextView对象并在两种模式(正常和斜体)中测量它的宽度来实现它。如果它们的宽度相同,则表示不支持斜体模式。

请看另一个问题中提出的解决方案:Samsung devices supporting setTypeface(Typeface.Italic)?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6124440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档