• 使用Android系统默认支持的三种字体”sans”, “serif”, “monospace”
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:Android="http://schemas.android.com/apk/res/android"    Android:layout_width="fill_parent"    Android:layout_height="fill_parent" >    <TableRow>        <TextView            Android:layout_marginRight="4px"            Android:text="sans:"            Android:textSize="20sp" >        </TextView>        <!-- 使用默认的sans字体 -->        <TextView            Android:id="@+id/sans"            Android:text="Hello,World"            Android:textSize="20sp"            Android:typeface="sans" >        </TextView>    </TableRow>    <TableRow>        <TextView            Android:layout_marginRight="4px"            Android:text="serif:"            Android:textSize="20sp" >        </TextView>        <!-- 使用默认的serifs字体 -->        <TextView            Android:id="@+id/serif"            Android:text="Hello,World"            Android:textSize="20sp"            Android:typeface="serif" >        </TextView>    </TableRow>    <TableRow>        <TextView            Android:layout_marginRight="4px"            Android:text="monospace:"            Android:textSize="20sp" >        </TextView>        <!-- 使用默认的monospace字体 -->        <TextView            Android:id="@+id/monospace"            Android:text="Hello,World"            Android:textSize="20sp"            Android:typeface="monospace" >        </TextView>    </TableRow>    <!-- 这里没有设定字体,我们将在Java代码中设定 -->    <TableRow>        <TextView            Android:layout_marginRight="4px"            Android:text="custom:"            Android:textSize="20sp" >        </TextView>        <TextView            Android:id="@+id/custom"            Android:text="Hello,World"            Android:textSize="20sp" >        </TextView>    </TableRow></TableLayout>
  • 对单个控件使用自定义字体,通过ID查找到View,然后挨个为它们设置字体
// 得到TextView控件对象TextView textView = (TextView) findViewById(R.id.custom);// 将字体文件保存在assets/fonts/目录下,www.linuxidc.com创建Typeface对象Typeface typeFace = Typeface.createFromAsset(getAssets(),"fonts/DroidSansThai.ttf");// 应用字体textView.setTypeface(typeFace);
  • 为每个文本组件创建一个子类,如TextView、Button等,然后在构造函数中加载自定义字体
public class BrandTextView extends TextView {      public BrandTextView(Context context, AttributeSet attrs, int defStyle) {          super(context, attrs, defStyle);      }     public BrandTextView(Context context, AttributeSet attrs) {          super(context, attrs);      }     public BrandTextView(Context context) {          super(context);     }     public void setTypeface(Typeface tf, int style) {           if (style == Typeface.BOLD) {                super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont_Bold.ttf"));            } else {               super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont.ttf"));            }      } }
/** * 只需要将标准的文本控件替换成你自定义的就可以了(例如BrandTextView替换TextView) */<com.your.package.BrandTextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="View with custom font"/><com.your.package.BrandTextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:textStyle="bold"         android:text="View with custom font and bold typeface"/>

另外,还可以直接在XML中添加自定义的字体属性。要实现这个,你需要定义你自己的declare-styleable属性,然后在组件的构造函数中解析它们。参照自定义控件属性。

  • 如果想对整个界面的所有控件都应用自定义字体,可以:
ckage arui.blog.csdn.net;  import android.app.Activity;  import android.graphics.Typeface;  import android.view.View;  import android.view.ViewGroup;  import android.widget.Button;  import android.widget.EditText;  import android.widget.TextView;  public class FontManager {      public static void changeFonts(ViewGroup root, Activity act) {         Typeface tf = Typeface.createFromAsset(act.getAssets(),                "fonts/xxx.ttf");         for (int i = 0; i < root.getChildCount(); i++) {             View v = root.getChildAt(i);             if (v instanceof TextView) {                ((TextView) v).setTypeface(tf);             } else if (v instanceof Button) {                ((Button) v).setTypeface(tf);             } else if (v instanceof EditText) {                ((EditText) v).setTypeface(tf);             } else if (v instanceof ViewGroup) {                changeFonts((ViewGroup) v, act);             }         }     }  }  

changeFonts()方法里面有个参数是ViewGroup,可以通过下面的方法获取:

public static ViewGroup getContentView( Activity act ){    ViewGroup systemContent = (ViewGroup) act.getWindow().getDecorView().findViewById( android.R.id.content );    ViewGroup content = null;    if ( systemContent.getChildCount() > 0 && systemContent.getChildAt( 0 ) instanceof ViewGroup )    {        content = (ViewGroup) systemContent.getChildAt( 0 );    }    return(content);}

参考文章:
1.http://www.cnblogs.com/brainy/archive/2012/05/30/2526538.html#2832068
2.http://ryanhoo.github.io/blog/2014/05/05/android-better-way-to-apply-custom-font/

更多相关文章

  1. Android(2.Activity初步)
  2. android Java代码设置textview的字体资源颜色
  3. Android(安卓)-- 资源使用和总结经验分享
  4. android window 一些属性说明
  5. Android(安卓)- 基于Toolbar的Navigation Drawer(Material Desig
  6. Android可拖拽布局ConstraintLayout
  7. Binary XML file line #11: You must supply a layout_width att
  8. android4.0 禁止横竖屏切换使用
  9. Android(安卓)View动画开发笔记

随机推荐

  1. Android Makefile中如何识别TARGET_PRODU
  2. [Android]新功能引导高亮显示遮罩层View
  3. android kernel+busybox
  4. android百问(更新中)
  5. Android特殊字体引入,以及描边和投影
  6. Android 编译环境配置搭建(Ubuntu 12.04)
  7. ShareSDK for Android(安卓)只有新浪微博
  8. 适用于Android的Google Fit:读取传感器数
  9. Android -Recovery
  10. Android SDK需要安装的包