在Android裡面設定一個TextView的文字顏色和文字大小,都很簡單,也是一個常用的基本功能。但很少有設定文字字型的,今天要分享的是通過TypeFace去設定TextView的文字字型,佈局裡面有兩個Button,總共包含兩個小功能:換字型和變大。
功能的核心部分主要是兩點:
- 建立assets外部資原始檔夾,將ttf格式的字型檔案放在該目錄下
- 通過TypeFace類的createFromAsset方法,讓TextView通過setTypeFace來改變字型
完整原始碼如下:
`import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.example.memorydemo.R;
public class ChangeFontActivity extends Activity implements View.OnClickListener {
private TextView textViewFont;
@Override
protected void onCreate(Bundle onSavedInstance) {
super.onCreate(onSavedInstance);
setContentView(R.layout.change_textview_font);
textViewFont = findViewById(R.id.textViewFont);
Button btnChangeFont = findViewById(R.id.buttonChangeFont);
Button btnAmplify = findViewById(R.id.buttonAmplify);
btnChangeFont.setOnClickListener(this);
btnAmplify.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.buttonChangeFont:
// 這裡我是從Android framework目錄下隨便挑了一種字型
textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/BitMDL2.ttf"));
// 直接將 ttf 檔案放在 assets 目錄下也是可以的
// textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "BitMDL2.ttf"));
break;
case R.id.buttonAmplify:
// 佈局裡面預設大小是 12 SP,這裡將字型大小設定為 24 SP,方便看效果
textViewFont.setTextSize(24);
break;
default:
break;
}
}`
字型檔案的存放目錄結構如下(ttf字型檔案既可以直接放在assets目錄,也可以在assets下新建一層目錄,比如我建了一層 fonts目錄):
2、佈局檔案change_textview_font.xml
3、效果圖如下(先點選變大、再更換字型):
關於Android的字型,有以下兩點要注意:
- 字型檔案必須是ttf(True Type Font)格式,否則,即使程式編譯時不出錯,在執行時也會發生無法更改字型的情況
- 目前Android在支援字型檔案時還有些問題,即使用了不支援的字型,Android也不會發生錯誤,而是以預設字型 Droid Sans 替換。所以大家如果遇到使用外部字型卻發現沒變化時,問題就出在Android不支援該字型,而非程式錯誤
本功能裡面使用了外部字型,也可以通過呼叫Typeface的靜態方法defaultFromStyle,使用原生字型,它有以下常量,都是int型別:
- BOLD
- BOLD_ITALIC
- DEFAULT
- DEFAULT_BOLD
- ITALIC
- MONOSPACE
- NORMAL
- SANS_SERIF
- SERIF
大家有興趣可以自己測試下這些字型對應的效果。