三星设备支持setTypeface(Typeface.Italic)?

Foa*_*Guy 11 android italic typeface

我在应用程序中使用自定义View组件,通过Paint/Canvas在屏幕上绘制一些文本.

我使用以下代码(在调用canvas.drawText()之前)使我的文本斜体:

mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
Run Code Online (Sandbox Code Playgroud)

这适用于三星Galaxy Nexus.但在三星Epic 4g(Galaxy S),三星Epic Touch(Galaxy SII)和三星变换超我的文字仍然是非斜体.

有谁知道为什么这些三星设备中的一些不支持这样设置斜体文字?我知道这些设备能够呈现斜体文本,因为如果我有TextView,我可以使用它们

tv.setText(Html.fromHtml("<i>sometext</i>");
Run Code Online (Sandbox Code Playgroud)

在java或

android:textStyle="italic"
Run Code Online (Sandbox Code Playgroud)

在layout.xml中,我的文本显示为斜体.

有没有人知道另一种方法,我可以设置canvas的drawText()方法来绘制可能在这些设备上工作的斜体文本?

编辑:

以下列出了我尝试过的一些方法以及之后的评论结果.事实证明,SERIF似乎是唯一可以使用的字体.

mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT_BOLD, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC) //omg it is italic...But serifs look gross.
mPaint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC) //Nothing
mPaint.setTypeface(Typeface.create(Typeface.MONOSPACE, Typeface.ITALIC) //Changes font, but still no italic.
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD_ITALIC) //Bold but no italic
Run Code Online (Sandbox Code Playgroud)

再次编辑:为了实现此功能,我最终将roboto字体的斜体版本添加到我的assets文件夹并将其应用为字体.如果有人找到一种方法让它工作而不用这种方式添加它,我仍然会感兴趣.

Ton*_*ony 2

您的三星设备可能没有安装所需字体的原生斜体版本。您可能必须强制系统综合创建斜体样式字体。尝试:

tv.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC), Typeface.ITALIC);

编辑

而不是defaultFromStyle,尝试使用Typeface.create (Typeface family, int style)(记录在这里)。