gpt4 book ai didi

android - 字体文件的使用方法

转载 作者:太空狗 更新时间:2023-10-29 16:23:28 28 4
gpt4 key购买 nike

我想使用自定义字体文件。因为下面是我的代码

XML文件:

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

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/custom_font"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the Chantelli Antiqua font." />
</LinearLayout>

Java代码:

   TextView txt = (TextView) findViewById(R.id.custom_font);  
Typeface font = Typeface.createFromAsset(getAssets(), "Chantelli_Antiqua.ttf");
txt.setTypeface(font);

它的工作。但我想在整个项目中使用这种自定义字体。

所以我必须放在一个所有类都可以使用它的地方。不需要为每个 TextView 编写。

在哪里以及如何使用此自定义字体。

最佳答案

您可以使自定义 TextView 扩展 TextView 以设置自定义字体。

TextViewPlus.java:

package com.example;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;

public class TextViewPlus extends TextView {
private static final String TAG = "TextView";

public TextViewPlus(Context context) {
super(context);
}

public TextViewPlus(Context context, AttributeSet attrs) {
super(context, attrs);
setCustomFont(context, attrs);
}

public TextViewPlus(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setCustomFont(context, attrs);
}

private void setCustomFont(Context ctx, AttributeSet attrs) {
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus);
String customFont = a.getString(R.styleable.TextViewPlus_customFont);
setCustomFont(ctx, customFont);
a.recycle();
}

public boolean setCustomFont(Context ctx, String asset) {
Typeface tf = null;
try {
tf = Typeface.createFromAsset(ctx.getAssets(), asset);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface: "+e.getMessage());
return false;
}

setTypeface(tf);
return true;
}

}

attrs.xml:(在资源/值中)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TextViewPlus">
<attr name="customFont" format="string"/>
</declare-styleable>
</resources>

ma​​in.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:foo="http://schemas.android.com/apk/res/com.example"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<com.example.TextViewPlus
android:id="@+id/textViewPlus1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:text="@string/showingOffTheNewTypeface"
foo:customFont="Chantelli_Antiqua.ttf">
</com.example.TextViewPlus>
</LinearLayout>

您可以将“Chantelli_Antiqua.ttf”放入assets 文件夹。

编辑:看看这些问题 Using a custom typeface in Android

Android: Want to set custom fonts for whole application not runtime

Custom fonts and XML layouts (Android)

教程:

Custom XML Attributes For Your Custom Android Widgets

Using Custom fonts on Android

关于android - 字体文件的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504431/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com