nagyeongkim 2019. 6. 10. 16:44

2 개 이상의 위젯을 모아서 새로운 위젯으로.. 

 

다음과 같은 위젯이 반복해서 필요하다면?

자바 소스코드 안에서 CHILD 넣듯이.. 

APPENDCHILD 하는 거 처럼.. 

 

자바 코드에서 Class 만들고.. 레이아웃에 Widget 넣고 하는 거 .. 

단점: xml 상의 레이아웃으로 확인할 수 없고, 실행시에만 확인할 수 있다. 

 

공통점은 뽑아서 class로 만들고 차이점은 parameter로 받으면 된다. 

클래스의 getter & setter도 좋지만, textview

 

위젯 내부에 다른 녀석을 포함하는 것 : 뷰 그룹

준비할 것

1. 색상 : res/values/colors.xml

2. 문자열 : res/values/strings.xml

3. 디자인_스타일 : res/values/styles.xml

4. 레이아웃 : res/layout/widget_radio_box.xml

5. Radio Button 리스트에 사용할 선택항목이 필요하다.. resourcce_array

6. Custom Attribute를 추가한다. : res/values 경로에서 새로 생성 attrs.xml

why? 레이아웃 파일에서 속성으로 resource를 지정해주면 편한데,, resource를 지정할 attribute가 없기 때문.. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

android 급격한 버전 업이 있을 수 있다.... 

 

그럴 때 보안 코드 등.. 때문에 잘 되던 앱이 안될 수 있음.. 

 

android native 로 짜면 한번 짜고 갈아 엎을 생각 해둬야 함..

 

 

 

Attribute란? 

android xml 에 속성을 지정해 주는 것. 

 

but 현재 RadioBox에 라디오 버튼 리스트가 필요한데 레이아웃 xml 파일에서 속성으로 resource를 지정해서 java 클래스에서 해당 array 에 맞도록 RadioButton을 알아서 radioGroup에 추가해 줬으면 좋겠다.

 

attribute 설계

res/values/attrs.xml 에 box 라는 이름과 각 항목의 이름을 기억해 둬야 한다. 

지금까지 준비 한 모든 것을 구현 할 RadioBox 클래스를 생성

 

1. widget 패키지 추가

2. widget 패키지 안에 RadioBox 클래스 추가 > SuperClass 는 CardView

3. 생성 후 생성자 3가지를 추가 해 둠

4. 라디오 그룹 리스너도 추가