상세 컨텐츠

본문 제목

앱 개발 방법 - 앱 리소스 (XML에서 리소스 액세스 [XML 리소스로 리소스를 참조하는 데 쓰는 구문, 사용 사례])

안드로이드 프로그래밍/앱 리소스

by green post it 2022. 1. 7. 21:47

본문

반응형

XML에서 리소스 액세스

기존 리소스에 대한 참조를 사용하여 일부 XML 특성과 요소의 값을 정의할 수 있습니다. 이 작업은 레이아웃 파일을 생성할 때 위젯에 문자열과 이미지를 제공하기 위해 자주 하게 됩니다.

 

예를 들어 레이아웃에 Butto를 추가하면 해당 버튼 텍스트에 문자열 리소스를 사용해야 합니다.

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/submit" />

구문

다음은 XML 리소스로 리소스를 참조하는 데 쓰는 구문입니다.

@[<package_name>:]<resource_type>/<resource_name>

사용 사례

일부 경우에는 값에 대한 리소스를 반드시 XML로 사용해야 하지만(예:위쳇에 드로어블 이미지를 적용하는 경우) 단순 값을 허용하는 곳이라면 어디서든 XML로 리소스를 사용할 수도 있습니다. 예를 들어 색상 리소스와 문자열 리소스를 포함한 다음 같은 리소스 파일을 가지고 있다고 가정해보겠습니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

이와 같은 리소스는 다음의 레이아웃 파일에서 텍스트 색상과 텍스트 문자열을 설정하는 데 사용할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

이 경우 리소스를 자체 패키지에서 가져왔으므로 리소스 참조에 패키지 이름을 지정하지 않아도 됩니다. 시스템 리소스를 참조하려면 패키지 이름을 포함해야 합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@android:color/secondary_text_dark"
    android:text="@string/hello" />

참고 : 항상 문자열 리소스를 사용해야 사용자의 애플리케이션이 다른 언어에 맞게 현지화될 수 있습니다. 대체 리소스(예 : 현지화된 문자열) 생성에 관한 자세한 내용은 "대체 리소스 한정자 이름"참조 하세요.

 

XML의 리소스를 사용하여 별명을 생성할 수도 있습니다. 예를 들어 드로어블 리소스이면서 다른 드로어블 리소스의 별명인 것을 생성할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/other_drawable" />

일견 중복되는 것처럼 들리지만 대체 리소스를 사용할 때 매우 유용하게 쓰일 수 있습니다. "별칭 리소스 생성"에 대해 자세히 알아보세요.

XML 리소스 선언
<?xml version="1.0" encoding="utf-8"?>
<resources>   
     <color name="opaque_red">#f00</color>   
     <string name="hello">Hello!</string>
</resources>

리소스 참조
<?xml version="1.0" encoding="utf-8"?><EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />
반응형

관련글 더보기