-
반응형
안녕하세요, 하루플입니다.
TextView에서 글자 크기나 색깔을 변경할때 일반적으로 아래와 같은 방법을 사용했습니다.
android:textSize="25dp" android:textColor="#2b5d5b"
하지만 이렇게 하면 글자 전체의 색상이 변경됩니다.
글자 중간의 색상을 변경할 땐 어떻게 해야할까요?
저는 이 방법을 알기 전까지는 LinearLayout에서 horizontal 속성을 하나 추가하여 만들었었는데 XML 코드가 무지막지하게 길어지고 가독성도 떨어지는 문제가 생겼습니다..
결국 글자 중간에도 원하는 옵션을 설정할 수 있는 방법을 찾아보았는데요
1. SpannableString 객체 생성.
2. TextView의 글자에서 특정 문자열의 시작 위치와 끝 위치 얻기.
3. spannableString의 속성 지정
4. 색이나 크기가 바뀐 spannableString을 TextView에 넣어주기여기서 '원하는 기능' 이라는 글자만 색을 바꿔보겠습니다.
1. SpannableString 객체 생성.
먼저 TextView에 변수를 지정해줍니다.
<TextView android:id="@+id/function_text" android:text="원하는 기능을 선택해주세요" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="25dp" android:fontFamily="@font/maruburi_regular" android:gravity="center" />
저는 function_text 라는 변수명으로 사용하겠습니다.
java로 오셔서 onCreate 내부에 아래와 같이 작성합니다. 변수명은 본인의 것으로 작성하시기 바랍니다.
TextView function_text = (TextView)findViewById(R.id.function_text); //텍스트 변수 선언 String content = function_text.getText().toString(); //텍스트 가져옴. SpannableString spannableString = new SpannableString(content); //객체 생성
2. TextView의 글자에서 특정 문자열의 시작 위치와 끝 위치 얻기.
String word ="원하는 기능"; int start = content.indexOf(word); int end = start + word.length();
여기서 content 는 방금 위에서 작성한 TextView 문자열이다.
3. spannableString의 속성 지정
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#2b5d5b")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new StyleSpan(Typeface.BOLD), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new RelativeSizeSpan(1.3f), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
- setSpan (속성, 시작 위치, 끝 위치, 플래그)
- ForegroundColorSpan : 글자 색상 지정. (BackgroundColorSpan : 배경색 지정)
- StyleSpan : 글자의 스타일 지정 (BOLD, ITALIC 등)
- RelativeSizeSpan : 글자의 상대적 크기 지정 (1.3f는 1.3배)
4. 색이나 크기가 바뀐 spannableString을 TextView에 넣어주기
function_text.setText(spannableString);
결과를 확인해보시면 원하는 부분의 글자만 바뀐것을 볼 수 있습니다
글자 속성 조금 바꾸는 것도 꽤나 시간이 드는 일이네요!
다른 궁금한 점 있으신 분들은 댓글로 질문 부탁드립니다.
참고 사이트 [https://dev-imaec.tistory.com/26]
반응형'개발 > Android' 카테고리의 다른 글
[코틀린/Kotlin] 기초 문법 정리 (0) 2021.11.01 안드로이드스튜디오 다른 Activity로 값 넘기기 (Intent로 간단하게!) (0) 2021.08.25 [안드로이드 스튜디오] 목록/내용을 접었다 펼 수 있는 Expandable Recycler View 사용 예제 (1) 2021.07.30 안드로이드 스튜디오 GIF 파일 재생하기 (1) 2021.07.29 [안드로이드 스튜디오] 앱 처음 사용하는 사용자 확인 (SharedPreferences) (0) 2021.07.29 댓글