1. res/values 디렉토리 에 style.xml 생성 후 <resources> 루트 노드 추가
2. 스타일 or 테마에 대한 고유 이름과 parent attribute 를 가지는 style element를 추가한다. 이름은 스타일을 reference하기 위해 사용되고 parent 스타일은 상속받을 스타일을 가르킨다... (여기서도 상속이 +_+)
3. style element 내부에 하나 또는 그 이상의 item element 에 포맷 값이 정의 되어야 하며 각각의 item element 는 name attribute 를 가진다. 그것으로 스타일 속성을 구분하며 해당 element 안에 그 값을 정의할 수 있다.
4. 이렇게 생성된 리소스는 다른 manifest 나 소스에서 사용할 수 있다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpecialText" parent="@style/Text">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#008</item>
</style>
</resources>
[/code]
- item 의 name은 지정할 속성 content 에는 그 값을 정의 할 수 있다. 색의 경우 16진수 컬러 값을 지정한다.
- style 에 parent는 상속받을 style을 지정하는 것이고 이는 안드로이드의 표준 리소스를 상속해야 한다.
[code]
<EditText id="@+id/text1" style="@style/SpecialText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, World!" />
[/code]
- 사용 예제로 style 지정을 위의 style을 지정한 이름은 SpecialText 로 주었고 이를 적용하게 된다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item>
</style>
</resources>
[/code]
- 리소스 사용시 @ 가 붙은 건 이전에 다른곳 (아마도 android framework?) 에서 정의된 리소스를 레퍼런스 한다는걸 의미한다.
- 리소스 사용시 ? 가 붙은 건 현재 로드된 테마에서 리소스 값을 레퍼런스 한다는 뜻이다. 즉 위의 소스에서 panelTextColor 에 값이 ?panelForegroundColor 게 되어 있다는 것은 동일 위치의 리소스인 <item name="panelForegroundColor">#FF000000</item> 를 사용하겠다는 의미 인 것이다.
[code]
<application android:theme="@style/CustomTheme">
[/code]
- app 에 테마를 설정하는 것은 위와 같이 하면 된다.
- 하나의 activity에만 적용하려면 테마 정보를 activity 에 추가하면 된다.
[code]
<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
[/code]
- 안드로이드 내에는 빌트인 된 리소스가 있기 때문에 activity 에 기본 테마를 적용할 수 있다.
[code]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
[/code]
- 소스상에서 테마를 적용하기 위해서는 반드시 임의의 뷰를 인스턴스 하기전에 설정해야 하며 setTheme 로 정의할 수 있다.
2. 스타일 or 테마에 대한 고유 이름과 parent attribute 를 가지는 style element를 추가한다. 이름은 스타일을 reference하기 위해 사용되고 parent 스타일은 상속받을 스타일을 가르킨다... (여기서도 상속이 +_+)
3. style element 내부에 하나 또는 그 이상의 item element 에 포맷 값이 정의 되어야 하며 각각의 item element 는 name attribute 를 가진다. 그것으로 스타일 속성을 구분하며 해당 element 안에 그 값을 정의할 수 있다.
4. 이렇게 생성된 리소스는 다른 manifest 나 소스에서 사용할 수 있다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpecialText" parent="@style/Text">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#008</item>
</style>
</resources>
[/code]
- item 의 name은 지정할 속성 content 에는 그 값을 정의 할 수 있다. 색의 경우 16진수 컬러 값을 지정한다.
- style 에 parent는 상속받을 style을 지정하는 것이고 이는 안드로이드의 표준 리소스를 상속해야 한다.
[code]
<EditText id="@+id/text1" style="@style/SpecialText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, World!" />
[/code]
- 사용 예제로 style 지정을 위의 style을 지정한 이름은 SpecialText 로 주었고 이를 적용하게 된다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item>
</style>
</resources>
[/code]
- 리소스 사용시 @ 가 붙은 건 이전에 다른곳 (아마도 android framework?) 에서 정의된 리소스를 레퍼런스 한다는걸 의미한다.
- 리소스 사용시 ? 가 붙은 건 현재 로드된 테마에서 리소스 값을 레퍼런스 한다는 뜻이다. 즉 위의 소스에서 panelTextColor 에 값이 ?panelForegroundColor 게 되어 있다는 것은 동일 위치의 리소스인 <item name="panelForegroundColor">#FF000000</item> 를 사용하겠다는 의미 인 것이다.
[code]
<application android:theme="@style/CustomTheme">
[/code]
- app 에 테마를 설정하는 것은 위와 같이 하면 된다.
- 하나의 activity에만 적용하려면 테마 정보를 activity 에 추가하면 된다.
[code]
<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
[/code]
- 안드로이드 내에는 빌트인 된 리소스가 있기 때문에 activity 에 기본 테마를 적용할 수 있다.
[code]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
[/code]
- 소스상에서 테마를 적용하기 위해서는 반드시 임의의 뷰를 인스턴스 하기전에 설정해야 하며 setTheme 로 정의할 수 있다.
'Android' 카테고리의 다른 글
frame layout (0) | 2013.10.08 |
---|---|
custom view (component) (0) | 2013.10.08 |
dialog notification (0) | 2013.10.08 |
notification (0) | 2013.10.08 |
focus (0) | 2013.10.08 |