Android TextView更换字体

本次练习目的是更改一个应用的textview的字体。

首先Android系统自带了几种字体,我们在Android应用程序的布局文件里可以指定这几种字体的任一种:
这里写图片描述

下面用这四种可选的字体看看效果,代码如下:

    <TextView
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Normal text效果"
        android:typeface="normal"
        android:textSize="30sp"
        android:textAllCaps="false"/>
    <TextView
        android:id="@+id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Serif text效果"
        android:typeface="serif"
        android:textSize="30sp"
        android:textAllCaps="false"/>
    <TextView
        android:id="@+id/text3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Monospace text效果"
        android:typeface="monospace"
        android:textSize="30sp"
        android:textAllCaps="false"/>
    <TextView
        android:id="@+id/text4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Sans text效果"
        android:typeface="sans"
        android:textSize="30sp"
        android:textAllCaps="false"/>

效果如下,这几种字体的英文效果可看出明显区别,而中文效果好像都没什么差别。其中normal和sans目测中英文效果都无差别。
这里写图片描述

上面仅仅是系统自带的字体效果,如果我们想换别的字体,怎么办呢?

第一步,首先要把字体文件放到项目的资源目录下。
本次练习中,我将字体文件放到src/main/assets目录下。注意Android studio项目默认没有assets目录,可以通过右键点击main目录,然后选择New -> Folder -> Assets Folder新建assets目录。
新建的assets目录和java,res目录在同一级。
这里写图片描述

第二步,在代码中动态设置:

TextView textView = (TextView) view.findViewById(R.id.fragment_text);
Typeface type = Typeface.createFromAsset(view.getContext().getAssets(), "newFont.ttf");
textView.setTypeface(type);

如上,textView即为我们要更改字体的文本,newFont.ttf是已经放好的字体文件。
运行效果如下:
这里写图片描述

### 如何在 Android Studio 中为 TextView 设置自定义字体 要在 Android Studio 中为 `TextView` 设置自定义字体,可以通过以下方式实现: #### 方法一:通过 XML 文件夹中的 font 资源设置 从 Android 8.0 (API Level 26) 开始,Google 提供了一种新的资源类型——font。可以将 TTF 或 OTF 格式的字体文件放入项目的 `res/font` 目录中[^4]。 1. 将所需的字体文件(TTF 或 OTF 格式)复制到项目目录下的 `res/font` 文件夹中。如果该文件夹不存在,则手动创建它。 2. 在布局文件中使用 `android:fontFamily` 属性指定字体名称: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Custom Font Example" android:fontFamily="@font/your_custom_font" /> ``` 此方法适用于支持 API Level 26 及以上的设备。对于较低版本的设备,需要启用矢量兼容模式或使用其他替代方案[^4]。 --- #### 方法二:通过 Java/Kotlin 动态加载字体 可以在运行时动态加载字体并应用到 `TextView` 上。这种方法适合所有 API 版本。 1. 将字体文件放置于 `assets` 文件夹中(如果没有 assets 文件夹,请手动创建)。 2. 使用 `Typeface.createFromAsset()` 创建字体对象,并将其应用于 `TextView`: ```java import android.graphics.Typeface; 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 = Typeface.createFromAsset(getAssets(), "fonts/your_custom_font.ttf"); textView.setTypeface(typeface); } } ``` 这种方式允许开发者灵活控制何时以及如何应用特定字体[^3]。 --- #### 方法三:使用第三方库简化操作 为了减少代码复杂性和提高可维护性,可以选择引入像 Google 的 Material Components 库或其他类似的开源工具包来管理字体资源。这些库通常提供额外的功能扩展和支持更多的定制选项[^1]。 例如,在 Gradle 文件中添加依赖项后,可以直接利用其内置功能完成相同任务而无需编写过多原生逻辑代码片段。 --- ### 注意事项 - 自定义字体可能增加 APK 大小,因此应谨慎选择必要数量和类型的字形文件[^2]。 - 如果计划支持国际化应用程序,请考虑不同语言环境下的字符集覆盖范围是否充分满足需求[^3]。 ```xml <!-- 示例:XML 方式 --> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello Custom Fonts!" android:fontFamily="@font/custom_font_name" /> <!-- 示例:Java 动态加载 --> import android.graphics.Typeface; // ... Typeface customFont = Typeface.createFromAsset(getAssets(), "custom_font.ttf"); textView.setTypeface(customFont); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值