[Android Studio] 匯入ttf檔,改變預設的字體(字形)

在自己的Android專案底下,路徑/app/src/main/res/ 建立font的資料夾


並且在font資料夾裡放入*.ttf 檔


假設你的ttf檔全名是abc.ttf


那放置的路徑就是: /app/src/main/res/font/abc.ttf


匯入之後,若是要在TextView物件裡加入abc.ttf檔的字體,則XML裡程式碼如下:

<TextView
android:id="@+id/textview123"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:fontFamily="@font/ab_yz"
android:textColor="@color/black"
android:textSize="22sp" />

顏色為紅色的地方就是我加入名為ab_yz的ttf檔


那如果是要在程式碼中改變字體呢? 很簡單,以TextView為例:

textView123.setTypeface(ResourcesCompat.getFont(this, R.font.ab_yz));

就可以了!


結果比對 左是原本的系統預設字體,右邊是改過後的字體:







匯入成功後,在compiler時會出現以下錯誤:

java.lang.NoSuchMethodException: android.graphics.FontFamily.<init> []

...

全部錯誤碼太長我就不貼了。


解決方式是在build.gradle(:app) 裡加入


def core_version = "1.3.2"
// Java language implementation
implementation "androidx.core:core:$core_version"

// Kotlin
implementation "androidx.core:core-ktx:$core_version"


參考資料 reference:

解決compiler會產生錯誤的參考

https://stackoverflow.com/questions/63181236/java-android-app-java-lang-nosuchmethodexception-android-graphics-fontfamily-i



留言

熱門文章