Android 如何强制应用程序使用默认字体?喜欢Gmail应用程序吗?

Android 如何强制应用程序使用默认字体?喜欢Gmail应用程序吗?,android,android-fonts,Android,Android Fonts,我想强制Android的默认字体(ICS中的Roboto和旧版本中的其他字体)出现在我Android应用程序中的所有文本视图中 当用户从系统首选项更改它时,它不应更改 这可能吗 我试图在应用程序的主题中将字体设置为正常。但这并不奏效。但当我尝试monospace时,它起了作用 我不想在我的软件包中包含任何字体文件。我见过GMail应用程序在ICS上这么做。他们是怎么做到的 Yoy可以扩展TextView对象,并重写构造函数以强制字体类型: Typeface type = Typeface

我想强制Android的默认字体(ICS中的Roboto和旧版本中的其他字体)出现在我Android应用程序中的所有文本视图中

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

这可能吗

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


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

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

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

只需在应用程序中使用主题即可。 您可以从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>

自定义字体

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

Typeface tf = Typeface.createFromAsset(this.getAssets(), "fonts/CUSTOMFONT.tff");
TextView tv = (TextView) findViewById(R.id.TEXTVIEW_ID);
tv.setTypeface(tf); 
以下是证明我的主张的链接:

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


我发现在处理字体时,不同设备之间存在一些不一致之处。我的猜测是,如果您希望在所有设备上实现此功能,您必须在软件包(资产中)中包含字体文件的副本@Stefano Ortisi您是否实现过您提供的解决方案?@Arungerge sure。您可以检查这个小示例项目:检查项目,正如我所说的,自定义字体只能以编程方式使用。您在项目的
style.xml
serif
中使用的字体是内置字体之一。因此,您使用的不是自定义字体,而是android内置字体。因此,当您说
yourcustomfont
时,您完全错了,实际上可能是
AndroidBuildInFonts
我想强制使用默认字体。我不想包括ttf文件。默认字体是指已经安装在设备上的字体。您的代码段中缺少一个基本的setTypeFace调用。