안드로이드 스튜디오에서 기본으로 제공하는 폰트가 아닌 다른 폰트를 적용할 경우가 생긴다. 필자도 그랬다. 그래서 폰트 적용 방법을 소개하려고 한다.
1. font directory 생성
- 폰트 추가를 위해서는 디렉토리를 먼저 생성해야 한다.
- res/font 폴더를 만든다.
2. 원하는 font 넣기
- 적용하고 싶은 font 파일을 font 디렉토리 안에 넣는다.
- https://noonnu.cc/ 이 곳에서 무료로 이용할 수 있는 폰트를 다운받을 수 있다. 그러므로 필요한 폰트를 다운받도록 하자!
- 주의할 점은 font 파일 이름은 모두 소문자로 바꿔줘야 한다는 것이다.
3. 필요한 곳에 font 적용하기
- 우리가 원하는 곳에 font를 적용해보자. 보통 font를 적용한다고 하면 한 곳에만 적용하기 보다 통일성을 유지하면서 Title, Description 등에 폰트를 적용할 것이다.
- font 디렉토리 아래에 font resource file을 생성한다.
- 필자는 app_font.xml이다. (2번의 사진을 참고하면 된다.)
4. font resource file 구현
- font resource file은 API 26 이상부터 지원하기 때문에 이보다 낮은 버전에서도 적용하기 위해 app namesapce를 사용한다.
- font : 사용할 글꼴 파일 위치
- fontStyle : 해당 글꼴의 스타일
- fontWeight : 글꼴의 굵기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedAttribute,ResourceCycle">
<font android:font="@font/noto_sans_demi_light" android:fontStyle="normal" android:fontWeight="300" app:font="@font/noto_sans_demi_light" app:fontStyle="normal" app:fontWeight="300" />
<font android:font="@font/noto_sans_regular" android:fontStyle="normal" android:fontWeight="500" app:font="@font/noto_sans_regular" app:fontStyle="normal" app:fontWeight="500" />
<font android:font="@font/noto_sans_medium" android:fontStyle="normal" android:fontWeight="1000" app:font="@font/noto_sans_medium" app:fontStyle="normal" app:fontWeight="1000" />
</font-family>
|
5. style.xml에 custom font family 적용
- 여기서 폰트를 일괄 적용시키는 방법은 2가지다.
- 위젯의 기본테마를 상속받아서 해당 위젯을 사용하는 곳에서는 폰트를 무조건 사용하도록 한다.
- TextAppearance를 상속받은 스타일을 만들어 그 스타일을 적용하는 위젯만 폰트를 사용하도록 한다.
- 필자는 2번의 방식으로 적용했기 때문에 2번을 기준으로 설명하겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <style name="Text.RankStyle" parent="android:TextAppearance"> <item name="android:textStyle">normal</item> <item name="android:textSize">@dimen/text_size_14</item> <item name="android:textColor">@color/colorGray</item> <item name="android:fontFamily">@font/app_font</item> <item name="android:includeFontPadding">false</item> </style>
<style name="Text.TitleStyle" parent="android:TextAppearance"> <item name="android:textStyle">bold</item> <item name="android:textSize">@dimen/text_size_16</item> <item name="android:textColor">@color/colorBlack</item> <item name="android:fontFamily">@font/app_font</item> <item name="android:includeFontPadding">false</item> </style>
|
- 위의 xml처럼 필요한 스타일을 정의하고, 그에 맞는 폰트를 지정해준다. textStyle을 normal, bold처럼 수정하여 원하는 글꼴을 사용할 수 있다.
6. 글꼴 적용
- 이제 원하는 TextView에서 정의된 style을 적용하여 글꼴을 적용할 수 있다.
1 2 3 4 5 6 7 8 9 10
| <TextView android:id="@+id/itemTextName" style="@style/Text.TitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_16" android:hint="@string/dummy_name" android:text="@{model.name}" app:layout_constraintStart_toEndOf="@id/itemImageShop" app:layout_constraintTop_toTopOf="@id/itemImageShop" />
|
예시 사진
- 로즈베이에 bold하면서 원하는 글꼴이 적용된 것을 볼 수 있다.
Reference