본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Style & Theme 에 대하여..

by 돼지왕 왕돼지 2012. 6. 11.
반응형




http://developer.android.com/guide/topics/ui/themes.html 

- style 정의는 res/values/ 폴더에. root node 는 <resources>. 각 style 정의마다 <style> 태그로 시작하며 unique 한 name attribute 가 필요. 각 속성은 <item> 으로 정의한다.


- style 을 상속하기 위해서는 parent="@android:style/TextAppearance" 와 같은 속성을 주어야 한다. 하지만, 본인이 직접 구현한 style 을 상속할 때는 꼭 저런 문구를 쓰지 않아도, <style name="ParentStyle.NewStyle"> 과 같이 ParentStyle 과 . 을 이용해서 상속을 구현할 수도 있다. 이 . 은 여러 level 중첩될 수 있다. GrandParentStyle.ParentStyle.NewStyle 과 같이 말이다.


- xml의 장점은 style정의에도 적용되는데, 특정 view 에 style 을 적용할 때, accept 할 수 없는 attribute 들은 그냥 무시된다.


- view 에는 적용되지 않고, style 로만 정의 가능한 attribute 들도 있는데, 이는  http://developer.android.com/reference/android/R.attr.html 에서 "window" 로 시작하는 녀석들을 참조하면 알 수 있다. 


- style 의 적용은 2가지 방법이 있는데. application 은 android:theme 으로, view 는 android:style 로 적용.


- ViewGroup 에 style 을 적용해도 child view 에 style이 적용되지 않는다. 명시적으로 style 속성을 준 녀석들만 style 이 적용된다. 만약 모든 view 에 style 을 적용하고 싶다면, theme 으로 정의해야 한다. theme 정의는 Application 혹은 Activity 에 적용할 수 있다.


- Android 는 version 에 따라 지원하는 theme 의 종류가 늘어나는데, version 에 따른 theme 지원은 res/values 의 폴더를 구분하는 것이다. 만약 API Level 11 이상에서는 다른 theme 을 적용하고 싶다면 res/values-v11 에 스타일 추가 정의를 하면 된다.
 

- 적용가능한 theme 의 모든 종류는 http://developer.android.com/reference/android/R.styleable.html#Theme 에서 찾을 수 있다. 실제 attribute 로 적용할 때는 _ 대신 . 을 써서 기술해준다. 비록 해당 link 에서 적용 가능한 theme 들을 볼 수는 있지만, 문서화 작업이 정확히 되지 않아서, 소스코드를 보고 해당 style과 theme 을 이해하는 것이 더 정확하다.



도움이 되셨다면 손가락 꾸욱~




반응형

댓글