Android 개발 Tip.
- CollapsingToolbarLayout
외부 폰트(font) 적용하는 방법
Typeface.createFromAsset
setCollapsedTitleTypeface
setExpandedTitleTypeface
그냥 toolbar가 아닌
CollapsingToolbarLayout 안에 있는 toolbar에
외부 폰트를 적용하는 방법에 대해서
상당히 애를 먹었다.
일단 CollapsingToolbarLayout 안의 toolbar에 외부 폰트를 적용할 때는
toolbar에다가 속성을 넣어주면
절대 안 먹힌다.
그래서 CollapsingToolbarLayout에 속성을 넣어줬는데
그래도 안 먹힌다.
미치는 줄 알았다.
구글링을 통해서
StackOverFlow나 국내 블로그 등 온갖 방법들을 다 찾아봤지만
되는 게 하나도 없었다.
1. 안 되는 것들
(폰트 파일은 res/font/ 폴더에 있는 상태)
- style파일에 직접 스타일 지정해서 넣기 (안 됨)
- xml파일로 속성 넣기 (안 됨)
1
2
3
|
<style name="MyToolbarStyle">
<item name="android:fontFamily">@font/폰트파일명</item>
</style>
|
cs |
이런 식으로 직접 스타일을 지정해서
(style에서 parent 속성도 사이트마다 넣으라는 거 다 넣어 봤는데 똑같이 안 된다.)
또는
1
2
3
4
5
6
7
8
9
10
|
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar"
app:collapsedTitleTextAppearance="@style/CollapsingStyle"
app:expandedTitleTextAppearance="@style/ExpandedStyle">
|
cs |
이런식으로 xml 파일을 수정하든
또는
저것들 뿐만이 아니라
Toolbar에 넣든
CollapsingToolbarLayout에 넣든
style 파일에 넣든
xml 파일에 속성으로 넣든
theme 속성을 넣든
textAppearance 속성을 넣든
fontFamily 속성을 넣든
app: 을 붙여서 하든
android: 를 붙여서 하든
fontPath를 넣든
collapsedTitleTextAppearance 속성도
expandedTitleTextAppearance 속성도
온갖 경우의 수를 다 실행해봤지만 되지 않았다.
보는 사람 입장에서는 이렇게 해보면 될거에요~ 라고 할 수 있지만
시키는 건 그대로 따라서 다 해봤다.
안 된다!!!
진짜로 다 해봤다ㅋㅋㅋㅋㅋㅋ
자바 코드에서도
별에 별 방법을 다 해봤지만
하나도 안 된다.
StackOverFlow의 질문자들이 답변마다 달아놓은 대답도 나랑 같았다.
it does not work...
it does not work...
it does not work...
it does not work...
it does not work...
생각보다 많은 사람들이 잘 모르는 건가 싶었다.
해결책이라고 올려주는 사람들도
그냥 모르는데 대충 올리는 것 같았다.
되는 게 하나도 없었다.
근데 하나 웃긴건
혹시나 해서 안드로이드 기본 폰트 중에서 (예를 들면 san-serif, casual 등)
하나 정해서 이렇게 쓰면 정상적으로 되는데
<item name="android:fontFamily">casual</item>
외부 폰트는 안 된다는 점이었다.
물론 개발 환경마다 다르니까 나만 안 될 수도 있겠지만
아무튼 내 경우와 같이 저런 것들이 다 안 먹히는 경우에는
해결방법을 하나 찾았다.
2. 되는 방법
1
2
3
4
5
6
7
|
CollapsingToolbarLayout toolbar_layout;
toolbar_layout = findViewById(R.id.toolbar_layout);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/폰트파일명.ttf");
toolbar_layout.setCollapsedTitleTypeface(tf); // 작아졌을 때
toolbar_layout.setExpandedTitleTypeface(tf); // 커졌을 때
|
cs |
따로 style을 지정하지 않고
자바 코드만으로 해결되었다.
예전에 폰트를 넣던 방식인
- app/src/main 폴더에
- asstes 폴더를 만들어 주고
- 그 안에 fonts 폴더를 만들어서
- 폰트 파일을 집어 넣고
저렇게 불러와서 설정하면
폰트가 정상적으로 적용된다.
온갖 삽질을 다 해봤지만
예전 방식으로 되다니..
assets 폴더에 폰트를 넣는 방식은 예전 방식인데
최근에는 대부분 res 폴더에 font 폴더를 만들어서 쓴다.
그래서 assets 폴더에 폰트 파일을 중복해서 넣을 수 밖에 없었다.
이 부분에 대해서는 또 해결책을 찾아봐야겠다.
'Android 개발 > android :: Tip' 카테고리의 다른 글
[안드로이드 View] TextView 글자수 초과시 말줄임 (...) 표시 넣는 방법 (0) | 2019.09.27 |
---|---|
[안드로이드 View] custom TextView 로 style 일괄 적용하기 (0) | 2019.09.25 |
[안드로이드 액티비티] 화면 고정 방법 / 화면 회전 시 activity 초기화 현상 막기 (4) | 2019.09.20 |
[안드로이드 Toolbar] CollapsingToolbarLayout 스크롤시 툴바 가리기 속성 (0) | 2019.09.20 |
[안드로이드 View] NavigationView 의 menu - item 의 폰트(font) 변경하기 (0) | 2019.09.19 |
[안드로이드 Toolbar] 툴바 font(폰트) 간단히 적용하는 방법 (0) | 2019.09.18 |
[안드로이드 Font] 원하는 폰트를 받아서 폰트 직접 적용하기 (0) | 2019.09.18 |
[안드로이드 Inflate] 현재 layout에 다른 layout 넣기 - Inflater 간단 사용법 (0) | 2019.09.18 |
댓글