메뉴 건너뛰기

조회 수 906 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

1. 문자열 리소스 - /res/values/Strings.xml

안드로이드 프로젝트를 생성하게 되면 /res/values/ 경로 아래에 strings.xml이라는 xml 리소스 파일을 확인할 수 있습니다. 

 

 

 

▼ 해당 파일은 프로젝트 생성당시에 default로 생성되는 xml 리소스 파일입니다. 이미 app_name이라는 이름을 가진 문자열 리소스가 정의되어 있습니다. 각 태그 요소와 xml 리소스 작성방법에 대해 살펴보겠습니다.

 

● <resource> 요소

xml 리소스를 추가하는데 있어서 필수로 들어가는 루트 요소입니다. 반드시 추가하는 리소스는 <resource> ~ </resource> 내부에 작성되어야 합니다. 

 

● <string> 요소

단일 문자열 리소스를 추가할 때 사용하는 요소입니다. 반드시 name 속성값을 지정해야 하며 name 속성값은 문자열의 이름이자 다른 곳에서 참조해야 할 리소스 ID로 사용됩니다. 


2. 단일 문자열 리소스 추가하기

문자열 리소스 추가는 default로 생성되는 string.xml에 추가해도 됩니다. 다만, 실습 예제는 따로 xml 리소스 파일을 추가해서 문자열 리소스를 추가해보는 방식으로 진행하도록 하겠습니다.

 

 

 

▼ 프로젝트 경로의 /values 폴더를 우클릭하여 [New] -> [Values resource file]을 클릭합니다. 리소스 파일 이름은 자유롭게 지정하고 ok를 클릭하면 리소스 파일이 생성됩니다. 

 

 

 

▼ 이미 작성하기 쉬운 Format으로 파일이 생성되기 때문에 <resource> ~ </resource> 안에 <string>을 통해 문자열 리소스를 추가해주면 됩니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="TEST_STRINGRESOURCE1">Test 첫 번째 문자열입니다.</string>
    <string name="TEST_STRINGRESOURCE2">Test 두 번째 문자열입니다.</string>
    <string name="TEST_STRINGRESOURCE3">Test 세 번째 문자열입니다.</string>
    <string name="TEST_STRINGRESOURCE4">Test 네 번째 문자열입니다.</string>
    <string name="TEST_STRINGRESOURCE5">Test 다섯 번째 문자열입니다.</string>
</resources>

▼ 문자열 리소스 5개를 추가한 형태입니다. 주의할 건 name 속성값은 resource ID 값으로 사용되기 때문에 중복은 피해 줍니다. 꼭 그게 아니더라도 해당 문자열 리소스를 나타내는 명시적인 이름을 사용해주는 게 좋기 때문에 신경 써서 이름을 작성해주는 게 좋습니다.

 

 

 

 


3. 자바 소스에서 문자열 리소스 참조하기

이번에는 추가한 문자열 리소스를 자바 소스에서 참조하는 방법을 살펴보겠습니다. 앞서 mystring.xml 리소스 파일에서 정의한 문자열 리소스를 참조할 것이며 해당 문자열 리소스를 통해 Text를 표현하기 위해 TextView가 배치된 레이아웃 리소스를 구성합니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />
</LinearLayout>
public class MainActivity extends AppCompatActivity{

    TextView textView1;
    TextView textView2;
    TextView textView3;
    TextView textView4;
    TextView textView5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_resource);

        this.InitializeView();
        this.setTextView();
    }

    public void InitializeView()
    {
        textView1 = (TextView)findViewById(R.id.textView1);
        textView2 = (TextView)findViewById(R.id.textView2);
        textView3 = (TextView)findViewById(R.id.textView3);
        textView4 = (TextView)findViewById(R.id.textView4);
        textView5 = (TextView)findViewById(R.id.textView5);
    }

    public void setTextView()
    {
        textView1.setText(getString(R.string.TEST_STRINGRESOURCE1));
        textView2.setText(getString(R.string.TEST_STRINGRESOURCE2));
        textView3.setText(getString(R.string.TEST_STRINGRESOURCE3));
        textView4.setText(getString(R.string.TEST_STRINGRESOURCE4));
        textView5.setText(getString(R.string.TEST_STRINGRESOURCE5));
    }
}

▼ mainActivity 클래스는 TextView를 참조할 수 있는 변수 5개를 가지고 멤버 변수로 InitializtView Method와 setTextView() Method를 가집니다. InitializeView() Method는 레이아웃 리소스에서 정의했던 TextView들의 참조 객체를 얻어오는 함수입니다. 다음 setTextView() Method에서 리소스 파일에 정의된 문자열 리소스를 가져와 TextView의 Text에 지정합니다

 

▼ 문자열 리소스를 가지고 오기 위해 getString() Method를 호출합니다. 인자로 찾고자하는 문자열의 리소스 ID 즉 문자열 이름을 지정해주는데 R.string. 문자열 이름 방식으로 참조가 가능합니다.


4. xml 레이아웃 리소스에서 문자열 리소스 참조하기

이번에는 xml 레이아웃 리소스상에서 TextView의 Text 속성 값을 문자열 리소스를 사용하여 설정하는 방법을 살펴보겠습니다. 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        ...
        android:text="@string/TEST_STRINGRESOURCE1" />

    <TextView
        ...
        android:text="@string/TEST_STRINGRESOURCE2" />

    <TextView
        ...
        android:text="@string/TEST_STRINGRESOURCE3" />

    <TextView
        ...
        android:text="@string/TEST_STRINGRESOURCE4" />

    <TextView
        ...
        android:text="@string/TEST_STRINGRESOURCE5" />
</LinearLayout>

▼"@string/리소스 ID" 형식으로 참조가 가능합니다. 

 

 

 


5. 문자열 포맷(Format) 지정하기

만약 다음과 같은 Value를 가지는 문자열 리소스가 있다고 가정을 해보겠습니다.

 

"당신의 점수는 100점입니다."

 

해당 문자열에서 점수는 상황에 따라 변경되어야 하는 값입니다. 이러한 유동적인 값을 소스상에서 처리하기 위해서는 String 클래스의 멤버 함수인 format() Method를 활용합니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name = "SCORE">당신의 점수는 %d점입니다.</string>
</resources>

▼ 점수가 들어가야 하는 부분에 % d가 들어갔습니다. C/C++ 언어를 접하신 분들은 익숙한 부분입니다. %d는 정수형 데이터를 출력할 수 있는 서식 문자입니다. 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="test" />

</LinearLayout>

▼ 레이아웃 구성은 간단하게 TextView 1개를 배치해줍니다. 

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_resource);

        TextView textView = (TextView)findViewById(R.id.textView1);

        String text = getString(R.string.SCORE);

        textView.setText(String.format(text,100));
    }
}

▼ 먼저 getString()을 통해 SCORE 문자열 리소스를 참조하여 text 문자열 변수에 저장합니다. setText()를 통해 TextView의 Text를 지정할 때는 text를 그대로 넘기는 게 아니라 String Class의 format()을 통하여 %d에 출력할 정수형 데이터를 지정해줍니다.

 

 

 


6. 작은따옴표 (') 큰 따옴표 (") 출력하기

문자열 리소스에서 작은따옴표와 큰 따옴표를 출력하기 위해서는 아래와 같이 사용하면 정상적으로 원하는 출력물을 얻을수 없습니다. 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name = "TEST_RESOURCE1">테스트 문자열 : 'Hello'</string>
    <string name = "TEST_RESOURCE2">테스트 문자열 : "Hello"</string>
</resources>

▼ Hello를 감싸는 작은 따옴표와 큰 따옴표를 표현하기 위해서는 아래와 같이 사용합니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name = "TEST_RESOURCE1">테스트 문자열 : \'Hello\'</string>
    <string name = "TEST_RESOURCE2">테스트 문자열 : \"Hello\"</string>
</resources>

▼ 서식 문자를 활용하여 작은따옴표는 \' 같이 작성하고 큰 따옴표의 경우는 \" 작성합니다.


List of Articles
번호 제목 날짜 조회 수
217 안드로이드 로그인유지 코드 2015.12.14 8807
216 안드로이드 EditText 필터링 검색 구현(adapter.getFilter().filter(cs)) file 2015.12.14 8759
215 안드로이드 webview (웹뷰) 개발 #3 - 초기 로딩화면 (splash) 띄우기 + 아이콘 적용하기 file 2015.07.17 8697
214 JAVA JDBC를 사용하여 MySQL과 연동 file 2015.11.21 8644
213 화면 해상도에 관계없는 레이아웃(Layout) 만들기 file 2015.07.16 8641
212 폰갭(PhoneGap) 에서 페이지들간의 이동 2015.06.29 8468
211 폰갭(PhoneGap) 플러그인 만들기 2015.06.29 8433
210 안드로이드 소스 코드 보호 기법 2015.06.29 8336
209 Activity Switching / 안드로이드 액티비티 전환 / 화면 전환 file 2016.06.07 8311
208 안드로이드 webview (웹뷰) 개발 #2 - 파일 첨부 및 플러그인 적용하기 file 2015.07.17 8285
207 [안드로이드] 페이스북 같은 슬라이드 메뉴 만들기 file 2015.07.21 8182
206 Android Navigation Drawer API 공개! 디자인 가이드 살펴보기 file 2015.07.29 8141
205 안드로이드 맵 API key (배포용 맵키) file 2015.07.01 8103
204 Android 와 JSP 간 파라미터 암복호화 (3) file 2016.05.26 8088
203 화면 회전에 따른 애니메이션 효과 구현하기 2015.07.16 8055
202 안드로이드 로그인 화면 만들기 file 2015.09.05 8043
201 블루투스(Bluetooth) 통신에 대해 알아보자 file 2015.07.01 7983
200 안드로이드 - 소방시설바이블 어플 소스 ( 폰갭, 폰갭플러그인, assets 폴더안의 파일 이용, pdf 리더기 선택, 유튜브재생기 선택 ) file 2015.06.29 7976
199 안드로이드 NDK 개발환경 만들기 / 이클립스 NDK 설정 file 2015.06.10 7890
198 어댑터 뷰(Adapter View) & 어댑터(Adapter) (1) file 2016.06.08 7852
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved