본문 바로가기
프로그래밍/안드로이드

안드로이드 문자열 리소스 만들고 사용하기

by pentode 2018. 4. 20.

안드로이드 앱의 버튼, 레이블, 텍스트 뷰 등에 사용되어지는 문자열들은 각각의 요소에 직접 적을 수도 있지만 하나의 자원 파일(strings.xml)에 정의해 두고 참조해서 사용하는 것을 권장 합니다. 이렇게 하면 같은 내용의 문자열을 앱 내의 여기 저기에서 사용하지 않아도 되므로 크기를 줄일 수 있고, 변경시에도 리소스 파일 한군데에서만 변경하면 되므로 쉽게 변경 할 수 있고, 오타 등의 오류도 줄일 수 있습니다.


먼저 테스트용 프로젝트를 만듭니다.


Create Android Project
  - Application name : HelloWorld
  - Company domain : pentode.tistory.com

Target Android Devices
  - Phone and Table에 체크
  - API 16: Android 4.1 (Jelly Bean) 선택

Add an Activity to Mobile
  - Empty Activity 선택

Configure Activity
  - Activity Name : MainActivity
  - Generate Layout File 체크
  - Layout Name : activity_main
  - Backwards Compatiblility (AppCompat) 체크


아래와 같이 만들어 질 것입니다. 왼쪽은 Project뷰이고, 가운데는 activity_main.xml 파일의 디자인 탭을 보여주고 있습니다.




디자인 뷰의 앱 화면 가운데 TextView가 하나 있고, 글자는 "Hello World!"가 들어가 있습니다. 하단의 "Text" 탭을 눌러서 activity_main.xml 파일의 내용을 보면 android:text="Hello World!" 라고 문자열이 직접 들어가 있는것을 볼 수 있습니다.


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


이것을 문자열 리소스를 사용하도록 수정해 보겠습니다. 리소스 파일은 좌즉 Project뷰에서 res -> values 트리를 확장하면 strings.xml 파일이 있습니다.


문자열 리소스를 추가하고, 앱내의 요소에 연결하는 방법은 두 가지가 있겠습니다. 첫 번째로는 각각의 xml 파일을 직접 수정하는 방법입니다. strings.xml 파일을 수정해서 문자열을 추가하고, activity_main.xml 파일을 직접 수정해서 연결하는 것입니다. 두 번째 방법은 GUI 를 사용해서 추가 및 연결을 하는 방법 입니다.



1. xml 파일을 직접 수정하는 방법


- strings.xml 파일을 더블 클릭해서 연 다음 다음을 추가합니다.


<resources>
    <string name="app_name">HelloWorld</string>
    <string name="greeting">Hello World!</string>
</resources>


- acitvity_main.xml 파일을 Text 탭에서 다음을 수정합니다.


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/greeting"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


- 이제 디자인 뷰에서 TextView를 클릭하고, 오른쪽의 Attribute 창을 보면 TextViw의 text 부분에 @string/greeting 으로 변경된 것을 볼 수 있습니다.




2. GUI를 사용해서 변경하기


- 앞의 Attribute 창에서 text : @string/greeting 옆의 ... 부분을 클릭합니다. Resource 창이 뜨고 앞에서 본 strings.xml 파일내의 greetings : Hello World! 이 있는것을 알 수 있습니다. strings.xml 에 추가된 내용이 이곳에 보이고, 선택한 다음 OK 버튼을 누르면 그 항목으로 바꿀 수 있습니다.




- 새 문자열을 추가 하려면 Resource 창에서 오른쪽 위의 "Add new resource" 부분을 클릭하여 "New string value..." 를 클릭합니다.


- New String Value Resource 창에서 다음과 같이 입력합니다.

  * Resource name : greeting_android

  * Resource value : Hello Android!

  * File name : strings.xml (리소스 파일 입니다. 그대로  사용합니다.)

  * Create the ressource in directories: values (xml 파일이 들어갈 디렉토리 입니다. 그대로 사용합니다.)




- 모두 입력후 OK 버튼을 누르면 바로 적용이 됩니다. 디자인 화면에 "Hello Android!" 가 표시되고, Attribute 창에는 방금 생성한 @stirng/greeting_android 가 적용되어 있는것을 확인할 수 있습니다. 당연히 strings.xml 파일을 열어보면 방금 추가한 내용이 보일것 입니다.



3. tools:text 사용하기


디자인 화면에서 text 바로 아래에 스패너 모양의 아이콘이 있고 text 로 되어 있는 부분이 있습니다. 이곳이 글을 입력하면 tools:text="@string/greeting_andorid" 가 추가됩니다.




<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="@string/greeting_android" />


디자인 보기에서는 보이는것은 앞에서의 android:text="@string/greeting_android" 로 설정 되었던것가 다름이 없습니다. 이 android:text 와 tools:text 의 차이점은 android:text는 디자인뷰에서도 보이고, 실제 앱이 실행될때 보여질 문자열을 지정하는 것이고, tools:text 에 지정된 문자열은 디자인 뷰에서만 보여지게 됩니다.


디자인할때는 모양이 어떻게 될지 확인하기 위해서 글자를 넣어두고, 실제 앱이 배포될 때는 글이 없어야 한다면, tools:text에 글자를 넣고 개발을 하면 됩니다.

반응형