본문 바로가기

나의 플랫폼/안드로이드

[Android] CustomView에 Attribute 만들기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


1. values 폴더에 attrs.xml 파일을 만든다.

2. 아래와 같이 attrs.xml 에 코드를 추가한다. NewAttr로 strokeWidth와 strokeColor 라는 속성을 만드는 것이다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="NewAttr">
<attr name="strokeWidth" format="dimension" />
<attr name="strokeColor" format="color" />
</declare-styleable>
</resources>

3. layout xml 파일에 속성 값을 넣는다. (잘 안보이시겠지만, 진하게 되어 있는 부분만 추가하면 됩니다.)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.canvastest.MainActivity">

<com.test.canvastest.GroupTitleView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:gravity="center"
android:text="aaaaaaaaaaaaaaaaaaaaaaaaaa"
android:textSize="20dp"
app:strokeWidth="2dp"
app:strokeColor="@android:color/black"
/>
</RelativeLayout>


4. CustomView에 속성 값을 가져 온다.


public GroupTitleView(Context context, AttributeSet attrs) {
super(context, attrs);
strokeWidth = context.obtainStyledAttributes(attrs, R.styleable.NewAttr)
.getDimensionPixelSize(R.styleable.
NewAttr_strokeWidth, context.getResources().getDimensionPixelSize(R.dimen._2dp));

color = context.obtainStyledAttributes(attrs, R.styleable.NewAttr)
.getColor(R.styleable.
NewAttr_strokeColor, Color.WHITE);
}


끝!!


index를 가져 올때 , 아래와 같다. (Android studio 1.5 버전 부턴 ctrl+space로 자동 확인 가능)


Styleable Name + '_' + attr


즉, NewAttr + '_' + strokeWidth 로 index를 불러오면 된다.


참고하세요.



CanvasTest.zip