티스토리 뷰
적용되는 범위:
Theme(앱전체) > Style(뷰) > Attribute
👍 스타일과 테마는 유사점이 많으나 용도가 서로 다르다.
테마와 스타일은 속성을 리소스에 매핑하는 키-값의 쌍이라는 동일한 기본구조를 가진다.
✌️ 스타일은 특정 뷰 유형의 속성을 정할 수 있다. 특정한 하나의 스타일로 버튼 속성을 지정하거나 할 수 있다. 스타일에 지정하는 모든 속성은 레이아웃 파일에서 설정할 수 있는 속성. 모든 속성을 스타일로 추출하면 여러 위젯에서 손쉽게 속성을 사용하고 관리할 수 있다.
위젯: 홈 화면 맞춤설정의 필수적인 부분.
👌 테마는 스타일, 레이아웃, 위젯 등으로 참조할 수 있는 명명된 리소스 모음을 말한다. 테마는 colorPrimary같은 시맨틱 이름을 Android 리소스에 할당한다.
🤘 스타일과 테마는 함께 작동하도록 설계되었다.
버튼의 한 부분이 colorPrimary이고, 다른 부분은 colorSecondary가 되는 스타일을 만들 수 있다.(colorPrimary, colorSecondary: 테마로부터 온 리소스)
🖐️ 스타일 만들기
res/values/styles.xml 파일에서 진행
<style> 요소 추가
하위 <item> 요소 추가
- 스타일 만들기
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="GreenText" parent="TextAppearance.AppCompat">
<item name="android:textColor">#00FF00</item>
</style>
</resources>
- 뷰에 스타일을 적용
<TextView
style="@style/GreenText"
... />
스타일에 지정된 각 속성을 뷰에서 허용하면 속성이 뷰에 적용됩니다. 뷰에서 허용하지 않는 모든 속성은 무시되고 적용되지 않습니다.
그런데 보통 뷰 개별적으로 스타일을 적용하기보다 전반적인 앱이나 활동, 뷰 모음에 스타일을 테마로 적용한다고 한다.
스타일 확장 및 맞춤설정 ← 은 추후 정리하자..
🤙 스타일을 테마로 적용하기
스타일을 만들 때와 동일한 방식으로 테마를 만들 수 있다.
모양은 동일한데 스타일과 테마는 적용 방식에서 차이가 난다!!
뷰에서 style="" 속성으로 스타일을 적용하는 대신,
AndroidManifest.xml 파일의 이나 태그에서 android:theme 속성으로 테마를 적용한다.
- 앱 전체에 테마 적용하기
<manifest ... >
<application android:theme="@style/Theme.AppCompat" ... >
</application>
</manifest>
- 하나의 Activity에만 Light 테마 적용하기
<manifest ... >
<application ... >
<activity android:theme="@style/Theme.AppCompat.Light" ... >
</activity>
</application>
</manifest>
앱이나 활동의 모든 뷰에 지정된 테마의 스타일이 적용됨!
Summary
- 스타일은 개별 뷰 단위에 적용 가능함
- 테마는 스타일을 앱 전체, 혹은 액티비티에 적용하기 위해서 필요함
- 테마와 스타일은 동일한 형태를 가짐
- AndroidManifest에 테마를 지정하여 큰 범위에 스타일 적용가능
themes.xml과 styles.xml이 따로 정리되어 있는 이유는 개발자의 편의를 위한 것으로 추정됨..
'#1 > Android' 카테고리의 다른 글
[android]andorid emulator 말썽~ (0) | 2021.09.02 |
---|---|
[Android] Data Binding과 View Binding (0) | 2021.08.05 |
[Android/Dialog] Activity를 사용하여 Dialog를 띄우자 (0) | 2021.08.02 |
[Android/Dialog] Dialog를 Material Components 사용하여 넣어보자 (0) | 2021.08.02 |
[Android] Callback..! 콜백 (0) | 2021.08.02 |