我有一个使用自定义视图组件的应用程序,该组件通过 Paint/Canvas 在屏幕上绘制一些文本。
我正在使用以下代码(在我调用 canvas.drawText() 之前)使我的文本斜体:
mPaintText.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
这适用于三星 Galaxy Nexus。但在 Samsung Epic 4g (galaxy S)、Samsung Epic Touch (Galaxy SII) 和 Samsung Transform ultra 上,我的文字仍然不是斜体。
有谁知道为什么其中一些三星设备不支持以这种方式设置斜体文本?我知道这些设备能够呈现斜体文本,因为如果我有一个 TextView 我可以使用
tv.setText(Html.fromHtml("<i>sometext</i>");
在 java 或
android:textStyle="italic"
在 layout.xml 中,我的文本显示为斜体。
有谁知道我可以设置画布的 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
再次编辑:为了实现这个功能,我最终将斜体版的机器人字体添加到我的资产文件夹并将其应用为字体。如果有人找到一种方法让它工作而不以这种方式添加它,我仍然会感兴趣。