如何在安卓中添加自定义字体

原文:https://www . geeksforgeeks . org/如何在安卓中添加自定义字体/

谷歌字体提供了各种各样的字体,可用于在安卓工作室中设置文本样式。合适的字体不仅能增强用户界面,还能表明和强调文本的目的。在安卓工作室中,有三种方法可以给文本添加自定义字体。前两种方法涉及使用字体类,而最后一种方法相当直接和容易。跟随整篇文章探索所有的方法。

方法 1

在这种方法中,我们将首先从互联网上下载字体的 ttf 文件,然后将它们用作设置字体的资产或资源。你可以在这里找到可下载的字体此处使用舞剧字体。一旦你下载了你选择的字体,解压文件夹并复制字体文件。

通过创建新的安卓资源目录:

  • 第一步:在项目的资源文件夹中,新建安卓资源目录资源类型:字体将这个‘TTF’文件粘贴到这里。请注意,粘贴时,请记住资源文件的名称只能由小写字母和下划线组成,因此请相应地重构文件。 add-custom-font

  • 步骤 2: 在 XML 文件中创建布局。 步骤 3:* 现在在主活动中(必须是与要定制的文本视图所在的布局文件相对应的活动),为该文本视图设置字体。

    activity _ main . XML

    ```java <?xml version="1.0" encoding="utf-8"?>

    TextView         android:id="@+id/textview"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="GeeksforGeeks"         android:textColor="#006600"         android:textSize="50dp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintLeft_toLeftOf="parent"         app:layout_constraintRight_toRightOf="parent"         app:layout_constraintTop_toTopOf="parent"/

    ```

    MainActivity.java

    ```java package com.example.android.customfonts;

    import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.res.ResourcesCompat; import android.graphics.Typeface; import android.os.Bundle; import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

    @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);

    TextView textView = findViewById(R.id.textview);

    Typeface typeface = ResourcesCompat.getFont(             this,             R.font.dancing_script_bold);         textView.setTypeface(typeface);     } } ```

    • Output: output-ui

    通过创建新的资产文件夹:

    • 第一步:在 Android Studio 中创建新的资产文件夹(app/New/Folder/Asset Folder),在此粘贴字体的‘TTF’文件。左边的图片显示了如何将 assets 文件夹添加到项目中,而右边的图片显示了添加的“ttf”文件。 custom-font
    • 第 2 步:虽然我们保持了与前面相同的 XML 布局,但是 MainActivity 的 Java 代码是这样修改的。

      MainActivity.java

      ```java package com.example.android.customfonts;

      import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.res.ResourcesCompat; import android.graphics.Typeface; import android.os.Bundle; import android.widget.TextView; import com.example.android.customfonts.R;

      public class MainActivity extends AppCompatActivity {

      @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);

      TextView textView = findViewById(R.id.textview);

      Typeface typeface = Typeface.createFromAsset(             getAssets(),             "macondo_swash_caps_regular.ttf");         textView.setTypeface(typeface);     } } ```

    • 输出: output-ui

    方法 2

    在这种方法中,我们将创建一个单独的 java 类来指定一种特定的字体,并使用这个类来代替 XML 文件中传统的 TextView 标签。

    方法 3

    在安卓 8.0(应用编程接口级别 26)中,引入了一种更简单的方法,在安卓工作室中将字体用作资源。文本视图类安卓:字体家族属性用于指定字体。

    • 步骤 1: 转到 XML 文件并转到设计视图。
    • 第二步:点击想要更改字体的文本视图。
    • 第三步:在搜索栏中,搜索 fontFamily。 T3】
    • 第四步:在下拉菜单中,可以查看可用的字体。如果您想了解更多,请向下滚动并单击“更多字体……”。
    • 第五步:弹出对话框。选择自己喜欢的字体,在预览中选择自己喜欢的风格,点击确定
    • Step 6: This would create a downloadable font and add it automatically to your project. dialogbox

      以下文件会自动添加到您的项目中: xml-code

    • 第 7 步:现在的 XML 文件会是这样的:

      activity _ main . XML

      ```java <?xml version="1.0" encoding="utf-8"?>

      <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:fontFamily="@font/aref_ruqaa"         android:text="GeeksforGeeks"         android:textColor="#006600"         android:textSize="50dp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintLeft_toLeftOf="parent"         app:layout_constraintRight_toRightOf="parent"         app:layout_constraintTop_toTopOf="parent" />

      ```

    • Output: output-ui

      结论 虽然最后一种方法看起来简单省时,但是它将额外的文件与应用的 APK 捆绑在一起,这可能会增加其大小。虽然这也确保了字体存在,即使当应用程序离线工作。第一种方法会产生一个较小的 APK,但是如果其他已经存在的应用程序的缓存中没有存储相同的字体,用户可能需要在处理该应用程序时访问互联网。