如何强制默认字体到应用程序?像Gmail应用程序一样吗?

时间:2012-06-27 15:28:04

标签: android android-fonts

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

当用户从系统偏好设置更改它时,它不应该更改。

这甚至可能吗?

我尝试在应用程序的主题中将字体设置为normal。但那没用。但是,当我尝试使用monospace时,它起作用。

我不想在我的包中包含任何字体文件。我见过GMail应用程序在ICS中做到了。他们是怎么做到的?

3 个答案:

答案 0 :(得分:2)

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

    Typeface type = Typeface.createFromAsset(getAssets(),"fonts/Kokila.ttf"); 
    this.setTypeface(type);

答案 1 :(得分:2)

@Stefano Ortisi提供的解决方案绝对是错误的。您可以在应用程序中拥有CUSTOM FONTS的唯一方法是将其放在assets目录中并从那里访问它:

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

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

Using a custom typeface in Android

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

Custom typeface error

答案 2 :(得分: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>