3

我想将 Android 的默认字体(ICS 中的 Roboto 和旧字体中的其他字体)强制到我的 android 应用程序中的所有 TextViews。

当用户从系统首选项更改它时,它不应更改。

这甚至可能吗?

我试图在应用程序的主题中将字体设置为正常。但这没有用。但是当我尝试 monospace 时,它​​起作用了。

我不想在我的包中包含任何字体文件。我已经看到 GMail 应用程序在 ICS 中执行此操作。他们是怎么做到的?

4

3 回答 3

2

Yoy 可以扩展 TextView 对象,并重写构造函数来强制字体类型:

    Typeface type = Typeface.createFromAsset(getAssets(),"fonts/Kokila.ttf"); 
    this.setTypeface(type);
于 2012-06-27T15:33:09.387 回答
2

@Stefano Ortisi 提供的解决方案是绝对错误的。在应用程序中拥有自定义字体的唯一方法是将其放置在 assets 目录中并从那里访问它:

Typeface tf = Typeface.createFromAsset(this.getAssets(), "fonts/CUSTOMFONT.tff");
TextView tv = (TextView) findViewById(R.id.TEXTVIEW_ID);
tv.setTypeface(tf); 

以下是证明我的主张的链接:

在 Android 中使用自定义字体

有一个与此问题相关的类似帖子。在尝试上述帖子中给出的解决方案之前检查此链接:

自定义字体错误

于 2012-06-27T15:46:29.827 回答
1

只需在您的应用程序中使用主题。您可以从 AndroidManifest.xml 设置它

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" android:theme="@style/YourCustomTheme">

然后你必须在 style.xml 文件中创建你的自定义主题

<style name="YourCustomTheme" >
     <item name="android:typeface">yourcustomfont</item>
</style>
于 2012-06-27T15:33:35.060 回答