本次练习目的是更改一个应用的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是已经放好的字体文件。
运行效果如下: