[Warning] 코드로 TextView 스타일 변경하기 (Normal, Bold, Italic...) - 예외상황
기본적으로 Textview 의 Style 변경은 Xml 파일에서 처리합니다. 그런데 클래스(Java or Kotlin)에서 처리도 합니다.
1. 클래스에서 TextView Style 변경
mTvSort.setTypeface(mTvSort.getTypeface(), Typeface.NORMAL);
mTvSort.setTypeface(mTvSort.getTypeface(), Typeface.BOLD);
mTvSort.setTypeface(mTvSort.getTypeface(), Typeface.ITALIC);
위와같이 Typeface 를 정해주면 된다. 그런데 저는 RecyclerView 의 Adapter 에서 특정 아이템에 대해서 Bold 처리를 하려고 했습니다.
레이아웃을 교체할 수도 있지만 저는 코드로 진행을 했습니다.
if (position == pick) {
holder.mTvName.setTypeface(holder.mTvName.getTypeface(), Typeface.BOLD);
holder.mTvPhone.setTypeface(holder.mTvPhone.getTypeface(), Typeface.BOLD);
holder.mView.setBackgroundColor(mContext.getColor(R.color.bright_blue));
}
else {
holder.mTvName.setTypeface(holder.mTvName.getTypeface(), Typeface.NORMAL);
holder.mTvPhone.setTypeface(holder.mTvName.getTypeface(), Typeface.NORMAL);
holder.mView.setBackgroundColor(mContext.getColor(R.color.TRANSPARENT));
}
그런데, 제가 참여하고 있는 서비스에서는 주력 모델이 Lenovo tb-8504f 이고 해당처리를 했을때, Bold 처리가 텍스트가 10번에 2~3번 Normal 로 적용이 되지 않았습니다. 그래서 저는 아래와 같이 특정 글꼴을 지정하고 Typeface.BOLD, Typeface.NORMAL 로 변경을 진행하니깐 텍스트 스타일이 제대로 변경되는걸 확인했습니다.
if (position == pick) {
holder.mTvName.setTypeface(Typeface.SERIF, Typeface.BOLD);
holder.mTvPhone.setTypeface(Typeface.SERIF, Typeface.BOLD);
holder.mView.setBackgroundColor(mContext.getColor(R.color.bright_blue));
}
else {
holder.mTvName.setTypeface(Typeface.SERIF , Typeface.NORMAL);
holder.mTvPhone.setTypeface(Typeface.SERIF, Typeface.NORMAL);
holder.mView.setBackgroundColor(mContext.getColor(R.color.TRANSPARENT));
}
즉, 나의 결론은 텍스트의 스타일을 변경하기 위해서 setTypeface() 함수를 사용할때 안드로이드 기본의 스타일getTypeface() 을 사용할 경우 가끔(?)씩 제대로 변경되지 않을수 있으니 특정 텍스트 폰트를 지정해서 사용하는게 좋을것 같다.
'Dev > Android' 카테고리의 다른 글
DialogFragment 사라질때 - dismiss listener (0) | 2018.06.21 |
---|---|
Fabric 오류 in Jenkins - Failed to apply plugin [id 'io.fabric'] (0) | 2018.06.18 |
Progressbar 를 띄울때, 해당 페이지 Touch 막기 (0) | 2018.06.07 |
안드로이드 strings.xml 특수문자 넣기 (0) | 2018.06.01 |
소프트 네비게이션 탐지 - Detect NavigationBar (0) | 2018.05.29 |