【问题标题】:How to use Roboto font in android Project [duplicate]如何在android项目中使用Roboto字体[重复]
【发布时间】:2012-11-12 10:40:17
【问题描述】:

我开发了一个安卓项目。在这个项目中,文本字体默认为 android:sans。

现在我想将整个项目的默认文本字体替换为roboto字体。

我该怎么做?

【问题讨论】:

    标签: android fonts


    【解决方案1】:

    您可以从这里下载 Roboto 字体: https://fonts.google.com/specimen/Roboto。 [2020-01-28 更新]

    您可以通过使用TypeFace 以常规方式执行此操作,如下所示:

    Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
    textView.setTypeface(typeface);
    

    注意:上述操作必须在每个Activity 中完成。

    或者,例如,如果您想将 Roboto 字体应用到应用程序中的所有 TextViews,那么您将需要创建自己的扩展 TextView 的小部件。

    有一种简单的方法可以做到这一点。按照这个答案的步骤操作:https://stackoverflow.com/a/9199258/450534(解决方案的完整道具leocadiotine。我以前用过它,它就像一个魅力)

    编辑:将your_namespace 视为一个标记,供您为其命名。例如,在 XML 中集成 Admob 时,我使用 xmlns:ads。例如,您可以使用:xmlns:font 或其他描述性内容。

    至于custom.ttf 代表什么,它基本上是您需要复制到Assets 文件夹中的带有扩展名的字体文件。例如,如果您使用 ROBOTO-REGULAR.TTF,则将 custom.ttf 替换为 ROBOTO-REGULAR.TTF。使用此示例,整个代码应如下所示:

    <your.package.widget.TypefacedTextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:font="http://schemas.android.com/apk/res/your.package"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Custom fonts in XML are easy"
        android:textColor="#FFF"
        android:textSize="14dip"
        font:typeface="ROBOTO-REGULAR.TTF" />
    

    【讨论】:

    • 自 X 11 以来,可以在 SDK 的 platforms/android-X/data/fonts/ 中找到字体(如果我没记错的话)。
    • @WebnetMobile.com:我知道。但我认为 SDK 中缺少一些内容。 Android 网页上的一个有 16 个。
    • Sidddharth Lele:你在 xml 文件中提到过 your_namespace,它是什么? ,而我的 assest 文件夹没有 custom.tff ,那该怎么办, custom.ttf 有什么用??
    • @Ricardo:当您使用默认 Android 字体以外的字体时,android:textStyle="...." 属性将被忽略。要使其粗体,您需要使用粗体版本的 .ttf / .otf 字体文件。然而,Trykker 字体只有普通版本,没有其他变体。
    • 如果将midSdk设置为16,则可以原生设置roboto字体,无需下载任何字体。下面是示例:从 android 4.1 / 4.2 开始,可以使用以下 Roboto 字体系列: ="sans-serif-condensed" // 压缩机器人 android:fontFamily="sans-serif-thin" // 瘦机器人 (android 4.2) android:fontFamily="sans-serif-medium"
    【解决方案2】:
    1. Download 并解压Roboto 字体压缩文件

    2. 如果您还没有assets 文件夹,请在您的项目中创建一个文件夹。我假设您正在使用 Android Studio,这是如何做到的。

    3. 在assets文件夹中新建一个目录,命名为font

    4. 打开您解压缩的文件并复制您选择的字体样式。您的字体文件夹应如下所示:

    您现在可以在应用中的任何位置使用此字体,如下所示:

       Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
      "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
       txtView.setTypeface(roboto);
    

    【讨论】:

    • 所以这应该为每个小部件完成??太可怕了。
    • 找不到页面 - 404
    • @EvgenyFedin 重新检查
    【解决方案3】:
    txtView = (TextView) findViewById(R.id.txtView);
    
    Typeface myTypeface = Typeface.createFromAsset(
                              this.getAssets(),
                              "font/Robot.otf");
    
    txtView.setTypeface(myTypeface);
    

    【讨论】:

      【解决方案4】:

      您可以使用Typerlib 轻松做到这一点。

      这个库包含了在你的文件中添加字体资源的复杂性 项目和回收那些最近创建的字体以最大化 您的应用的性能。

      将此添加到您的build.gradle

      dependencies {
          compile 'com.elmargomez.typer:typerlib:1.0.0'
      }
      

      然后就可以使用字体了

      TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1);
      TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2);
      TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3);
      TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4);
      
      txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR));
      txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC));
      txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN));
      txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD));
      

      它包括 Roboto 中所有当前的字体 ,喜欢:

          Font.ROBOTO_MEDIUM
          Font.ROBOTO_REGULAR
          etc.
      

      要查看所有可用的字体,请使用 Android Studio 自动完成在类 Font 之后按 Ctrl + space

      【讨论】:

        【解决方案5】:

        关于Typeface.createFromAsset() 函数的用法的补充说明。当我接到很多电话时,它显着影响了充气时间。为了克服这个问题,我们像这样创建了Typeface 的单例实例

        public static Typeface getTypeFace() {
                if (fromAsset == null) {
                    fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
                }
                return fromAsset;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-08
          • 2015-07-16
          • 1970-01-01
          • 2019-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-07
          相关资源
          最近更新 更多