안드로이드 string.xml에서 %d, %s 같은 포멧 서식 사용하는 법

프로그래밍/Android 관련2018. 3. 11. 22:31

안녕하세요. 개발자 드리머즈입니다.


문제 현상

안드로이드에선 UI와 관련된 텍스트들은 strings.xml에 저장합니다. 이렇게 코드와 UI 요소를 분리하면 다중언어 지원 쉽다는 등의 장점이 있습니다.

그런데 보여줘야 하는 텍스트가 고정된 값이 아니라 동적으로 변화하는 부분이 있다면 어떻게 해야할까요?


아래의 텍스트를 보여줘야하는 상황을 예로 들어보겠습니다.



오늘의 남은 도전 횟수는 3번입니다.


중요한 것은 위의 문자열에서 숫자 3이 고정된 값이 아니라 어플 실행중에 바뀌는 값이라는 것입니다. 처음엔 3이었다가 도전을 할 수록 2, 1, 0으로 감소하는 거죠.




해결 방법

이럴 때는 아래와 같이 코드를 작성하면 됩니다.


res/value/strings.xml

1
<string name="try_message">남은 도전횟수는 %d입니다.</string>
cs


java

1
2
Resources res = getResources();
String text = String.format(res.getString(R.string.try_message), remainingCount);
cs

아주 간단하죠?




원리

어떻게 동작하는지 분석해보겠습니다.


1
res.getString(R.string.try_message)
cs

위 java 코드는 단순하게 "남은 도전횟수는 %d입니다."를 반환합니다.


따라서 해결방법에 있는 java코드는 아래와 같이 됩니다.

1
String text = String.format("남은 도전횟수는 %d입니다.", remainingCount);
cs

복잡해 보였지만 사실 동작 원리는 우리가 잘 아는 String.format을 사용한 서식 표현이었습니다!

따라서 %d뿐만 아니라 %s, %f, %2d등의 포멧도 사용 가능합니다.

작성자

Posted by 드리머즈

관련 글

댓글 영역