我想更改整个应用程序组件的字体(TextView,Edittext,按钮等)。我发现我可以为应用程序设置样式但是在这里我无法将Asset文件中的字体放到我的自定义样式xml中。我必须将我的自定义TTF字体从资产文件夹放到样式xml中的字体元素。我无法将monospace字体更改为自定义字体。我的风格是
<resources>
<style name="heading_text">
<item name="android:textColor">#ff000000</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">16sp</item>
<item name="android:typeface">monospace</item>
</style>
答案 0 :(得分:2)
您可以访问我的博客http://upadhyayjiteshandroid.blogspot.in/2013/01/android-custom-fonts-part-2.html,您也可以在此处下载代码。
您需要做的是使用特定需要的字体制作自定义视图,并在任何您想要的地方使用它。
假设有一个textview用于此目的,使CustomTextView .java代码如下
package com.jitesh.customfonts;
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;
public class CustomTextView extends TextView {
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomTextView(Context context) {
super(context);
init();
}
public void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"fonts/HandmadeTypewriter.ttf");
setTypeface(tf, 1);
}
}
在xml中使用如下
<com.jitesh.customfonts.CustomTextView
android:id="@+id/custom1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="70dp"
android:text="@string/hello_Jitesh"
tools:context=".MainActivity" >
</com.jitesh.customfonts.CustomTextView>
还要确保您的资源在fonts/HandmadeTypewriter.ttf
答案 1 :(得分:0)
使用Utility类中的字体,这有助于维护整个应用程序的单个实例。
private static Typeface typeface;
public static Typeface getTypeFace(Context context) {
if (typeface == null) {
typeface = Typeface.createFromAsset(context.getAssets(),
"Sawasdee-Bold.ttf");
}
return typeface;
}