如何在小部件中更改TextView的字体?

4
有没有一种方法可以更改小部件中的字体?我在这里看到了一些问题/答案,但有些人说这是不可能的。其他人说可以做到,但是并没有提供太多信息。我说的是我放在资产文件夹中的自定义字体。我想要使用的字体是设计指南中的Roboto字体。
我主要想问的是因为其他问题说明它不可能。我在我的Nexus 7上有Google Currents小部件,它在其小部件上使用Roboto字体,所以肯定是有可能的吧?
我想要更改的TextView只是一个文本视图。它目前没有任何格式/样式。我唯一需要的就是将字体更改为Roboto Light。
我希望能获得一些如何做到这一点的建议。谢谢。
我实际上计划在这里开源我正在制作的小部件,所以它也可能会帮助其他人。

调用setTextSize()不起作用吗? - Michal Palczewski
我还没有尝试过它... TextSize并不是用于大小的吗?我是不是错过了什么非常简单的东西? - RED_
抱歉,我误解了问题。 - Michal Palczewski
1个回答

9

有没有一种方法可以更改小部件中的字体?

是的,但不幸的是,你只能使用系统字体。但你可以在 Android 4.1+ 上本地使用 Roboto 字体,像这样:

android:fontFamily="sans-serif"           // roboto regular
android:fontFamily="sans-serif-light"     // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed

想在旧版本中使用Roboto字体,唯一的方法是创建一个位图并在画布上绘制文本,示例如下:

    Bitmap myBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas myCanvas = new Canvas(myBitmap);
    Paint paint = new Paint();
    Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/myFont.ttf");

    paint.setTypeface(font);
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(...);
    paint.setTextSize(...);
    myCanvas.drawText("Hello World", x, y, paint);

然后将其设置为您的RemoteView,如下所示:

rViews.setImageViewBitmap(R.id.myImageView, myBitmap);

http://stackoverflow.com/questions/15991521/custom-font-in-android-for-whole-application/15991573#15991573 - Raghunandan
@Raghunandan OP在谈论AppWidgets中的自定义字体。 - Ahmad
@Ahmad 好的。如果是应用小部件,我们不能使用自定义字体吗? - Raghunandan
1
@Ahmad 感谢您的澄清。那么他可以使用可用的系统字体,对吧? - Raghunandan
1
@Ahmad 好的,非常感谢你的帮助!+1并标记为答案。 - RED_
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接