4

有没有办法改变小部件中的字体?我在这里看到了一些问题/答案,但有些人说无法做到。其他人说可以做到,但没有提供太多信息。我说的是我放在资产文件夹中的自定义字体。我想使用的字体是设计指南中的 Roboto。

我主要想问,因为其他问题表明这是不可能的。我的 Nexus 7 上有 Google Currents 小部件,它在它的小部件上使用了 Roboto 字体,所以肯定有可能吗?

我要更改的TextView 很好,只是一个textview。目前它没有格式/样式。我唯一真正需要的是将字体更改为 Roboto light。

我会很感激一些关于如何做到这一点的建议。谢谢。

我实际上计划开源我在这里制作的小部件,这样它也可以帮助其他人。

4

1 回答 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 的唯一方法是创建一个位图并在 Canvas 上绘制文本,如下所示:

    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);
于 2013-05-05T18:53:50.543 回答