티스토리 뷰
반응형
Android에서는 Theme과 Style을 통해서 비주얼 속성을 미리 정의하고 재사용 할 수 있습니다. Style은 개별적인 View에 적용되는 비주얼 속성을 정의합니다. Theme은 앱 전체에 적용되는 속성들을 정의합니다. 만약 특정 Theme을 적용하면 앱 전체의 Activity, View가 영향을 받습니다.
Style의 정의 및 사용
- res/values 폴더에 styles.xml을 추가합니다.
API 레벨 별로 Style을 적용할 수 있습니다. 예를들어 Android 5.0 (API 21) 이상에서 만 적용되어야 한다면 res/values-v21/styles.xml 형태로 정의할 수 있습니다. - styles.xml에 Style을 정의해주세요.
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- parent 속성은 생략할 수 있음. 아래는 Support Library의 TextApperance를 상속받아 재정의하는 예 --> <style name="TextDefault" parent="TextAppearance.AppCompat"> <item name="android:textColor">#333333</item> <item name="android:textSize">12sp</item> </style> <!-- parent 속성을 통해 다른 스타일 상속 가능 --> <style name="TextError" parent="TextDefault"> <item name="android:textColor">#FF0000</item> <item name="android:background">#EEEEE</item> </style> <!-- Dot(.) 문자를 통해 다른 스타일 확장 가능 --> <style name="TextError.Critical"> <item name="android:textStyle">bold</item> </style> </resources>
- 레이아웃 XML에서 style 속성을 통해 사용할 수 있습니다.
<TextView style="@style/TextError" ... />
Theme의 정의 및 사용
- 프로젝트를 생성하면 /res/values/themes.xml이 생성되며 기본적인 Theme이 정의되어 있습니다. themes.xml 파일이 없다면 /res/values/themes.xml 파일을 추가하시면 됩니다.
- themes.xml 파일을 열고 원하는 형태로 Theme를 정의하시면 됩니다.
<resources xmlns:tools="http://schemas.android.com/tools"> <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <!-- parent 속성을 통해 다른 Theme 상속 가능 --> <style name="AppTheme" parent="BaseAppTheme"> <item name="android:windowActivityTransitions">true</item> <item name="android:windowEnterTransition">@android:transition/slide_right</item> <item name="android:windowExitTransition">@android:transition/slide_left</item> </style> </resources>
- Theme은 AndroidManifest.xml 파일에서 적용할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.test.testApp"> <application android:label="@string/app_name" android:theme="@style/Theme.AppTheme" ...> ... </application> </manifest>
References
- Styles and themes : https://developer.android.com/guide/topics/ui/look-and-feel/themes
'Mobile > Android' 카테고리의 다른 글
[Android] 폰트 적용하기 (0) | 2022.07.02 |
---|---|
[Android] drawable과 drawable-v21 폴더만 생성되는 이유 (0) | 2021.04.12 |
[Android] drawable과 mipmap (1) | 2018.05.03 |
[Xamarin.Android] Push Notification 구현 (0) | 2018.04.23 |
[Android] 반투명 상태바 사용 (0) | 2017.11.17 |
[Android] View와 Layout (0) | 2017.11.14 |
[Android] Lollipop 5.0 (API 21)에서의 문제 (0) | 2017.11.14 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- Xamarin
- VisualStudio
- WPF
- flutter
- Android
- React
- .NET Standard
- Xamarin.iOS
- ASP.NET Core
- ios
- Vue
- MS SQL
- Xamarin.Forms 요약
- Xamarin.Forms eBook
- npm
- c#
- Xamarin.Forms
- TypeScript
- material-ui
- StringComparison
- Total
- Today
- Yesterday