整个应用程序的自定义字体

时间:2014-02-17 07:21:04

标签: android fonts

我想更改整个应用程序组件的字体(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>

2 个答案:

答案 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;
}