티스토리 뷰

Mobile/Android

[Android]Custom Attribute 사용

out of coding 2014. 9. 11. 15:23

Custom Attribute 사용


Custom Widget에 자신의 Attrs를 설정하고 싶을 경우가 있다.

다음과 같은 순서로 진행하면 사용할 수 있다.


1. attrs.xml에 사용자 속성 정의

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<declare-styleable name="ExButton">
		<attr name="image_src" format="reference"/>
	</declare-styleable>    
</resources>

- declare-styleable 태그 안에 attr 태그로 사용자 속성을 정의합니다. declare-styleable 태그안의 name 속성은 커스텀 위젯 소스코드(.java)에서 사용자 속성의 값을 가져오기 위해 사용됨

- attr 태그의 format 속성의 값으로는 boolean, integer, float, dimension, reference(id값), string, color(색상코드값), fraction, enum, flag 등이 있음



2. xml의 Custom Widget에 사용자 속성 정의


커스텀 위젯에 사용자 속성을 정의합니다.

이를 위해서는 먼저 사용자 속성을 사용하기 위한 네임스페이스를 지정해 주어야 합니다.

xml파일에 보면 최상위 layout의 attr에 지정되어 있는 android가 이런것이다.


네임스페이스명은 마음대로 지정하면 되고, 패키지명은 꼭 자신이 개발하고 있는 패키지명을 지정하도록 합니다.

설정의 예는 다음과 같음.


xmlns:[네임스페이스명]="http://schemas.android.com/apk/res/[어플의 패키지명]"


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:exbutton="http://schemas.android.com/apk/res/com.mrgamza.test"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent" >
	<TextView
		android:id="@+id/textview"
		android:layout_alignParentLeft="true"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" />
	<com.mrgamza.test.ExButton
		android:id="@+id/exbutton"
		android:layout_below="@id/textview"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		exbutton:image_src="@drawable/normal_image" />
</RelativeLayout> 


3. 커스텀위젯 소스코드에서 사용자 속성 사용


CustomView의 소스코드의 생성자에서 attr 파라미터 값을 이용해 TypeArray객체를 이용하여 가져와 사용합니다.

public ExButton(Context context, AttributeSet attr) {
 
	super(context, attr);
         
	TypedArray typedArray = context.obtainStyledAttributes(attr, R.styleable.ExButton);
	int imageSrc = typedArray.getResourceId(R.styleable.ExButton_image_src, 0);
	typedArray.recycle();
}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함