Kotlin Android 기초 10.1: 스타일 및 테마

이 Codelab은 Android Kotlin 기초 과정의 일부입니다. Codelab을 순서대로 진행하면 이 과정의 학습 효과를 극대화할 수 있습니다. 모든 과정 Codelab은 Android Kotlin 기본사항 Codelab 방문 페이지에 나열되어 있습니다.

디자인 소개

이 Codelab 시리즈에서는 Android 개발의 가장 중요한 측면 중 하나인 앱 디자인에 중점을 둡니다. 앱 디자인의 명백한 측면은 뷰, 텍스트, 버튼, 화면에서의 위치, 사용되는 색상과 글꼴입니다. 사용자에게 다음에 할 일을 알려주는 힌트도 디자인의 필수적인 측면입니다. 사용자는 보고 있는 내용, 중요한 내용, 할 수 있는 작업을 한눈에 파악할 수 있어야 합니다.

아래 두 화면을 비교하세요. 요소를 이동하고 중요한 요소에 포커스를 두면 사용자가 상황을 이해하는 데 도움이 됩니다. 간단한 화면의 경우 좋은 디자인은 표시되는 항목이 적다는 것을 의미하는 경우가 많습니다. 중요한 정보가 많은 화면의 경우 좋은 디자인을 사용하면 밀도 높은 정보를 한눈에 이해할 수 있습니다. Android 앱을 개발할 때 정보 아키텍처 (IA)라는 개념을 접할 수 있습니다.

또 다른 수준의 설계는 사용자가 작업을 완료할 수 있는 일관된 사용자 흐름, 즉 사용 사례를 구축하는 것입니다. 이러한 형태의 디자인을 사용자 경험 디자인 (UXD)이라고 하며, 일부 디자이너는 이 분야를 전문으로 합니다.

디자이너를 이용할 수 없는 경우 시작하는 데 도움이 되는 몇 가지 도움말을 참고하세요.

  • 사용 사례를 정의합니다. 사용자가 앱으로 무엇을 달성해야 하는지, 어떻게 달성해야 하는지 작성합니다.
  • 디자인을 구현합니다. 첫 번째 초안에 너무 애착을 갖지 마세요. 실제 사용자가 어떻게 상호작용하는지 확인한 후 변경할 것이기 때문에 '충분히 좋은' 수준으로만 만드세요.
  • 의견을 받습니다. 가족, 친구, Google 개발자 그룹에서 방금 만난 사람 등 앱 테스트를 부탁할 수 있는 사람을 찾아보세요. 내가 지켜보는 동안 앱을 사용하여 사용 사례를 실행하도록 요청하고 자세한 메모를 작성합니다.
  • 다듬기 이 모든 정보를 바탕으로 앱을 개선한 다음 다시 테스트합니다.

다음은 뛰어난 앱 환경을 설계할 때 고려해야 할 몇 가지 질문입니다. 이전 Codelab에서 이러한 문제를 해결하는 기법을 배웠습니다.

  • 사용자가 기기를 회전하면 앱의 상태가 손실되나요?
  • 사용자가 앱을 열면 어떻게 되나요? 사용자에게 로딩 스피너가 표시되나요? 아니면 오프라인 캐시에 데이터가 준비되어 있나요?
  • 앱이 효율적으로 코딩되어 있고 앱이 항상 사용자 터치에 응답하는지 확인합니다.
  • 앱이 백엔드 시스템과 상호작용하여 사용자에게 이상하거나, 잘못되거나, 오래된 데이터가 표시되지 않도록 하나요?

더 많은 잠재고객을 위한 앱을 개발할 때는 최대한 많은 유형의 사용자가 앱에 액세스할 수 있도록 하는 것이 중요합니다. 예를 들면 다음과 같습니다.

  • 많은 사용자가 다양한 방식으로 컴퓨터 시스템과 상호작용합니다. 많은 사용자가 색맹이며, 한 사용자에게 대비되는 색상이 다른 사용자에게는 대비되지 않을 수 있습니다. 많은 사용자가 돋보기를 필요로 하는 것부터 완전한 실명에 이르기까지 다양한 시각 장애를 겪고 있습니다.
  • 일부 사용자는 터치 스크린을 사용할 수 없으며 버튼과 같은 다른 입력 기기를 통해 상호작용합니다.

좋은 디자인은 사용자가 앱을 사용하도록 유도하는 가장 중요한 방법입니다.

이 Codelab은 Android 디자인에 관한 모든 것을 알려주기에는 너무 짧지만, 올바른 방향으로 시작할 수 있으며 혼자서 계속 학습하고 개발할 수 있습니다.

기본 요건

다음을 잘 알고 있어야 합니다.

  • 활동과 프래그먼트가 있는 앱을 만들고 데이터를 전달하여 프래그먼트 간에 이동하는 방법
  • RecyclerView를 비롯한 사용자 인터페이스 (UI)를 배치하기 위해 뷰와 뷰 그룹 사용
  • 권장 아키텍처와 함께 ViewModel를 비롯한 아키텍처 구성요소를 사용하여 잘 구조화되고 효율적인 앱을 만드는 방법
  • 데이터 바인딩, 코루틴, 클릭 처리 방법
  • Room 데이터베이스를 사용하여 인터넷에 연결하고 데이터를 로컬로 캐시하는 방법
  • 뷰 속성을 설정하는 방법
  • XML 리소스 파일에 리소스를 추출하고 XML 리소스 파일에서 리소스를 사용하는 방법

학습할 내용

  • Android 스타일 지정 시스템의 기본사항
  • 속성, 스타일, 테마를 사용하여 앱을 맞춤설정하는 방법

실습할 내용

  • 뷰 속성, 스타일, 테마를 사용하여 기본 앱 디자인 개선

GDG-finder 스타터 앱은 이 과정에서 지금까지 배운 내용을 기반으로 합니다.

앱은 ConstraintLayout를 사용하여 세 개의 화면을 배치합니다. 두 화면은 Android에서 색상과 텍스트를 탐색하는 데 사용할 레이아웃 파일입니다.

세 번째 화면은 GDG 찾기입니다. GDG(Google Developer 그룹)는 Android를 비롯한 Google 기술에 중점을 두는 개발자 커뮤니티입니다. 전 세계의 GDG는 모임, 콘퍼런스, 스터디 잼, 기타 이벤트를 주최합니다.

이 앱을 개발할 때는 실제 GDG 목록을 사용합니다. 찾기 화면에서는 기기의 위치를 사용하여 GDG를 거리순으로 정렬합니다.

운이 좋게도 거주 지역에 GDG가 있다면 웹사이트를 확인하고 이벤트에 가입할 수 있습니다. GDG 이벤트는 다른 Android 개발자를 만나고 이 과정에 포함되지 않은 업계 권장사항을 배울 수 있는 좋은 방법입니다.

아래 스크린샷은 이 Codelab의 시작부터 끝까지 앱이 어떻게 변경되는지 보여줍니다.

Android는 앱의 모든 뷰의 모양을 제어할 수 있는 다양한 스타일 지정 시스템을 제공합니다. 테마, 스타일, 뷰 속성을 사용하여 스타일 지정에 영향을 줄 수 있습니다. 아래 다이어그램은 각 스타일 지정 방법의 우선순위를 요약한 것입니다. 피라미드 다이어그램은 시스템에서 스타일 지정 메서드가 적용되는 순서를 아래에서 위로 보여줍니다. 예를 들어 테마에서 텍스트 크기를 설정한 다음 뷰 속성에서 텍스트 크기를 다르게 설정하면 뷰 속성이 테마 스타일을 재정의합니다.

뷰 속성

  • 뷰 속성을 사용하여 각 뷰의 속성을 명시적으로 설정합니다. 스타일과 달리 뷰 속성은 재사용할 수 없습니다.
  • 스타일이나 테마를 통해 설정할 수 있는 모든 속성을 사용할 수 있습니다.

여백, 패딩, 제약 조건과 같은 맞춤 또는 일회성 디자인에 사용합니다.

스타일

  • 스타일을 사용하여 글꼴 크기나 색상과 같은 재사용 가능한 스타일 정보 모음을 만듭니다.
  • 앱 전체에서 사용되는 작은 공통 디자인 세트를 선언하는 데 적합합니다.

여러 뷰에 스타일을 적용하여 기본 스타일을 재정의합니다. 예를 들어 스타일을 사용하여 일관된 스타일의 헤더나 버튼 세트를 만들 수 있습니다.

기본 스타일

  • Android 시스템에서 제공하는 기본 스타일입니다.

테마

  • 테마를 사용하여 전체 앱의 색상을 정의합니다.
  • 테마를 사용하여 전체 앱의 기본 글꼴을 설정합니다.
  • 텍스트 뷰나 라디오 버튼과 같은 모든 뷰에 적용됩니다.
  • 전체 앱에 일관되게 적용할 수 있는 속성을 구성하는 데 사용합니다.

TextAppearance

  • fontFamily과 같은 텍스트 속성으로만 스타일을 지정하는 경우

Android에서 뷰에 스타일을 지정할 때는 테마, 스타일, 속성의 조합을 적용하며, 이는 맞춤설정할 수 있습니다. 속성은 항상 스타일이나 테마에 지정된 내용을 덮어씁니다. 스타일은 항상 테마에 지정된 내용을 덮어씁니다.

아래 스크린샷은 밝은 테마 (왼쪽)와 어두운 테마 (오른쪽), 맞춤 글꼴과 헤더 크기가 적용된 GDG-finder 앱을 보여줍니다. 이 기능은 여러 가지 방법으로 구현할 수 있으며, 이 Codelab에서 몇 가지 방법을 알아봅니다.

이 작업에서는 속성을 사용하여 앱 레이아웃의 텍스트 헤더 스타일을 지정합니다.

  1. GDG-finder 시작 앱을 다운로드하여 실행합니다.
  2. 홈 화면에는 형식이 균일한 텍스트가 많이 표시되어 페이지의 내용과 중요한 내용을 파악하기 어렵습니다.
  3. home_fragment.xml 레이아웃 파일을 엽니다.
  4. 레이아웃은 ConstraintLayout를 사용하여 ScrollView 내에 요소를 배치합니다.
  5. 이러한 속성은 뷰와 화면마다 맞춤설정되는 경향이 있으므로 각 뷰의 제약 조건과 여백 레이아웃 속성은 뷰에 설정됩니다.
  6. title 텍스트 뷰에서 textSize 속성을 추가하여 텍스트 크기를 24sp로 변경합니다.

    sp배율 독립형 픽셀을 나타내며, 이는 픽셀 밀도와 사용자가 기기 설정에서 설정한 글꼴 크기 환경설정에 의해 모두 확장됩니다. Android는 텍스트를 그릴 때 화면에 표시될 텍스트의 크기를 파악합니다. 텍스트 크기에는 항상 sp를 사용합니다.
<TextView
       android:id="@+id/title"
...

android:textSize="24sp"
  1. title 텍스트 뷰의 textColor를 불투명 회색으로 설정합니다(aRGB 값을 #FF555555로 설정).
<TextView
       android:id="@+id/title"
...

android:textColor="#FF555555"
  1. Android 스튜디오에서 미리보기 탭을 열려면 보기 > 도구 창 > 미리보기를 선택하거나 Layout Editor의 오른쪽 가장자리에 있는 세로 미리보기 버튼을 클릭합니다. 아래와 같이 미리보기에서 제목이 회색이고 이전보다 커졌는지 확인합니다.

  1. 자막의 색상이 헤더와 동일하고 글꼴이 더 작도록 스타일을 지정합니다(18sp). (기본 알파는 FF(불투명)입니다. 알파 값을 변경하지 않는 경우 생략할 수 있습니다.)
<TextView
       android:id="@+id/subtitle"
...
android:textSize="18sp"
android:textColor="#555555"

  1. 이 Codelab에서는 전문적으로 보이면서도 약간 기발한 스타일로 앱을 지정하는 것을 목표로 하지만 원하는 대로 스타일을 지정할 수 있습니다. subtitle 텍스트 뷰에 다음 속성을 사용해 보세요. 미리보기 탭을 사용하여 앱의 모양이 어떻게 변경되는지 확인합니다. 그런 다음 이러한 속성을 삭제합니다.
<TextView
       android:id="@+id/subtitle"
       ...
       android:textAllCaps="true"
       android:textStyle="bold"
       android:background="#ff9999"
  1. 계속하기 전에 subtitle 뷰에서 textAllCaps, textStyle, background 속성을 실행취소해야 합니다.
  2. 앱을 실행하면 이미 더 나은 모습으로 표시됩니다.

앱에서 글꼴을 사용하는 경우 필요한 글꼴 파일을 APK의 일부로 제공할 수 있습니다. 이 솔루션은 간단하지만 앱을 다운로드하고 설치하는 데 시간이 더 오래 걸리므로 일반적으로 권장되지 않습니다.

Android에서는 앱이 다운로드 가능한 글꼴 API를 사용하여 런타임에 글꼴을 다운로드할 수 있습니다. 앱이 기기의 다른 앱과 동일한 글꼴을 사용하는 경우 Android는 글꼴을 한 번만 다운로드하여 기기의 저장공간을 절약합니다.

이 작업에서는 다운로드 가능한 글꼴을 사용하여 테마를 사용하는 앱의 모든 뷰의 글꼴을 설정합니다.

1단계: 다운로드 가능한 글꼴 적용

  1. Design 탭에서 home_fragment.xml을 엽니다.
  2. Component Tree 창에서 title 텍스트 뷰를 선택합니다.
  3. 속성 창에서 fontFamily 속성을 찾습니다. 모든 속성 섹션에서 찾거나 검색하면 됩니다.
  4. 드롭다운 화살표를 클릭합니다.
  5. 글꼴 더보기 로 스크롤하여 선택합니다. 리소스 창이 열립니다.

  1. 리소스 창에서 lobster 또는 lo를 검색합니다.
  2. 검색 결과에서 Lobster Two를 선택합니다.
  3. 오른쪽의 글꼴 이름 아래에서 다운로드 가능한 글꼴 만들기 라디오 버튼을 선택합니다. 확인을 클릭합니다.
  4. Android 매니페스트 파일을 엽니다.
  5. 매니페스트 하단에서 nameresource 속성이 "preloaded_fonts"로 설정된 새 <meta-data> 태그를 찾습니다. 이 태그는 Google Play 서비스에 이 앱이 다운로드된 글꼴을 사용하려고 함을 알립니다. 앱이 실행되고 Lobster Two 글꼴을 요청하면 글꼴 제공업체는 글꼴이 기기에 아직 없는 경우 인터넷에서 글꼴을 다운로드합니다.
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts"/>
  1. res/values 폴더에서 이 앱의 다운로드 가능한 모든 글꼴을 나열하는 배열을 정의하는 preloaded_fonts.xml 파일을 찾습니다.
  2. 마찬가지로 res/fonts/lobster_two.xml 파일에는 글꼴에 관한 정보가 있습니다.
  3. home_fragment.xml을 열고 코드와 미리보기에서 Lobster Two 글꼴이 title TextView에 적용되어 제목에 적용되었음을 확인합니다.

  1. res/values/styles.xml를 열고 프로젝트를 위해 생성된 기본 AppTheme 테마를 살펴봅니다. 현재는 아래와 같이 표시됩니다. 새 Lobster Two 글꼴을 모든 텍스트에 적용하려면 이 테마를 업데이트해야 합니다.
  2. <style> 태그에서 parent 속성을 확인합니다. 모든 스타일 태그는 상위 요소를 지정하고 상위 요소의 모든 속성을 상속할 수 있습니다. 코드는 Android 라이브러리로 정의된 Theme을 지정합니다. 버튼 작동 방식부터 툴바 그리기 방식까지 모든 것을 지정하는 MaterialComponents 테마 테마에는 적절한 기본값이 있으므로 원하는 부분만 맞춤설정할 수 있습니다. 앱은 작업 툴바 (NoActionBar)가 없는 이 테마의 Light 버전을 사용합니다. 위의 스크린샷을 참고하세요.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
   <!-- Customize your theme here. -->
   <item name="colorPrimary">@color/colorPrimary</item>
   <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
   <item name="colorAccent">@color/colorAccent</item>
</style>
  1. AppTheme 스타일 내에서 글꼴 모음을 lobster_two로 설정합니다. 상위 테마에서 둘 다 사용하므로 android:fontFamilyfontFamily를 모두 설정해야 합니다. 디자인 탭에서 home_fragment.xml를 선택하여 변경사항을 미리 볼 수 있습니다.
<style name="AppTheme"  
...    
        <item name="android:fontFamily">@font/lobster_two</item>
        <item name="fontFamily">@font/lobster_two</item>
  1. 앱을 다시 실행합니다. 새 글꼴이 모든 텍스트에 적용됩니다. 탐색 창을 열고 다른 화면으로 이동하면 글꼴이 적용된 것을 확인할 수 있습니다.

2단계: 제목에 테마 적용하기

  1. home_fragment.xml에서 lobster_two 글꼴의 속성이 있는 title 텍스트 뷰를 찾습니다. fontFamily 속성을 삭제하고 앱을 실행합니다. 테마에서 동일한 글꼴 모음을 설정하므로 변경사항이 없습니다.
  2. 다른 fontFamily 속성을 title 텍스트 뷰에 다시 넣습니다.
    app:fontFamily="serif-monospace"
    app 공간에 있는지 확인하세요.
<TextView
       android:id="@+id/title"
       ...
       app:fontFamily="serif-monospace"
  1. 앱을 실행하면 뷰에 로컬인 속성이 테마를 재정의하는 것을 확인할 수 있습니다.
  1. title 텍스트 뷰에서 fontFamily 속성을 삭제합니다.

테마는 기본 글꼴, 기본 색상과 같은 일반 테마를 앱에 적용하는 데 유용합니다. 속성은 특정 뷰의 스타일을 지정하고 각 화면에 특정한 경계, 패딩, 제약 조건과 같은 레이아웃 정보를 추가하는 데 유용합니다.

스타일 계층 구조 피라미드의 중간에는 스타일이 있습니다. 스타일은 선택한 뷰에 적용할 수 있는 재사용 가능한 속성 '그룹'입니다. 이 작업에서는 제목과 부제목에 스타일을 사용합니다.

1단계: 스타일 만들기

  1. res/values/styles.xml를 엽니다.
  2. <resources> 태그 내에서 아래와 같이 <style> 태그를 사용하여 새 스타일을 정의합니다.
<style name="TextAppearance.Title" parent="TextAppearance.MaterialComponents.Headline6">
</style>

스타일 이름을 지정할 때는 스타일 이름을 시맨틱으로 생각하는 것이 중요합니다. 스타일이 영향을 미치는 속성이 아닌 스타일이 사용될 용도에 따라 스타일 이름을 선택합니다. 예를 들어 이 스타일을 LargeFontInGrey이 아닌 Title로 지정합니다. 이 스타일은 앱의 모든 제목에 사용됩니다. 규칙에 따라 TextAppearance 스타일은 TextAppearance.Name이라고 하므로 이 경우 이름은 TextAppearance.Title입니다.

테마에 상위 요소가 있을 수 있는 것처럼 스타일에도 상위 요소가 있습니다. 하지만 이번에는 테마를 확장하는 대신 스타일이 스타일 TextAppearance.MaterialComponents.Headline6을 확장합니다. 이 스타일은 MaterialComponents 테마의 기본 텍스트 스타일이므로 확장하면 처음부터 시작하는 대신 기본 스타일을 수정하게 됩니다.

  1. 새 스타일 내에서 두 항목을 정의합니다. 한 항목에서 textSize24sp로 설정합니다. 다른 항목에서는 textColor을 이전에 사용한 것과 동일한 어두운 회색으로 설정합니다.
 <item name="android:textSize">24sp</item>
 <item name="android:textColor">#555555</item>
  1. 자막의 다른 스타일을 정의합니다. 파일 이름을 TextAppearance.Subtitle로 지정합니다.
  2. TextAppearance.Title와의 유일한 차이는 텍스트 크기이므로 이 스타일을 TextAppearance.Title의 하위 요소로 만듭니다.
  3. Subtitle 스타일 내에서 텍스트 크기를 18sp로 설정합니다. 완성된 스타일은 다음과 같습니다.
<style name="TextAppearance.Subtitle" parent="TextAppearance.Title" >
   <item name="android:textSize">18sp</item>
</style>

2단계: 만든 스타일 적용하기

  1. home_fragment.xml에서 TextAppearance을 추가합니다.Title 스타일을 title 텍스트 뷰에 적용합니다. textSizetextColor 속성을 삭제합니다.

    테마는 설정한 TextAppearance 스타일을 재정의합니다. (Codelab 시작 부분의 피라미드 다이어그램은 스타일이 적용되는 순서를 보여줍니다.) textAppearance 속성을 사용하여 스타일을 TextAppearance로 적용하면 Theme에 설정된 글꼴이 여기에 설정된 글꼴을 재정의합니다.
<TextView
       android:id="@+id/title"
       android:textAppearance="@style/TextAppearance.Title"
  1. 또한 TextAppearance.Subtitle 스타일을 subtitle 텍스트 뷰에 추가하고 textSizetextColor 속성을 삭제합니다. 이 스타일을 textAppearance로도 적용해야 테마에 설정된 글꼴이 여기에 설정된 글꼴을 재정의합니다.
<TextView
       android:id="@+id/subtitle"
       android:textAppearance="@style/TextAppearance.Subtitle"
  1. 앱을 실행하면 텍스트의 스타일이 일관되게 지정됩니다.

Android 스튜디오 프로젝트: GDGFinderStyles

  • 뷰의 테마, 스타일, 속성을 사용하여 뷰의 모양을 변경합니다.
  • 테마는 전체 앱의 스타일 지정에 영향을 미치며 색상, 글꼴, 글꼴 크기에 대한 많은 사전 설정 값이 제공됩니다.
  • 속성은 속성이 설정된 뷰에 적용됩니다. 패딩, 여백, 제약 조건과 같이 하나의 뷰에만 적용되는 스타일이 있는 경우 속성을 사용합니다.
  • 스타일은 여러 뷰에서 사용할 수 있는 속성 그룹입니다. 예를 들어 모든 콘텐츠 헤더, 버튼 또는 텍스트 뷰에 스타일을 적용할 수 있습니다.
  • 테마와 스타일은 상위 테마 또는 스타일에서 상속됩니다. 스타일 계층 구조를 만들 수 있습니다.
  • 속성 값 (뷰에 설정됨)은 스타일을 재정의합니다. 스타일은 기본 스타일을 재정의합니다. 스타일이 테마를 재정의합니다. 테마는 textAppearance 속성으로 설정된 스타일을 재정의합니다.

  • <style><item> 태그를 사용하여 styles.xml 리소스 파일에 스타일을 정의합니다.
<style name="TextAppearance.Subtitle" parent="TextAppearance.Title" >
   <item name="android:textSize">18sp</item>
</style>

다운로드 가능한 글꼴을 사용하면 APK 크기를 늘리지 않고도 사용자에게 글꼴을 제공할 수 있습니다. 뷰에 다운로드 가능한 글꼴을 추가하려면 다음 단계를 따르세요.

  1. 디자인 탭에서 보기를 선택하고 fontFamily 속성의 드롭다운 메뉴에서 글꼴 더보기를 선택합니다.
  2. 리소스 대화상자에서 글꼴을 찾아 다운로드 가능한 글꼴 만들기 라디오 버튼을 선택합니다.
  3. Android 매니페스트에 미리 로드된 글꼴의 메타데이터 태그가 포함되어 있는지 확인합니다.

앱이 처음 글꼴을 요청하고 글꼴이 아직 제공되지 않는 경우 글꼴 제공업체는 인터넷에서 글꼴을 다운로드합니다.

Android 개발자 문서:

기타 자료:

이 섹션에는 강사가 진행하는 과정의 일부로 이 Codelab을 진행하는 학생에게 출제할 수 있는 과제가 나열되어 있습니다. 다음 작업은 강사가 결정합니다.

  • 필요한 경우 과제를 할당합니다.
  • 과제 제출 방법을 학생에게 알립니다.
  • 과제를 채점합니다.

강사는 이러한 추천을 원하는 만큼 사용할 수 있으며 적절하다고 생각되는 다른 과제를 출제해도 됩니다.

이 Codelab을 직접 진행하는 경우 이러한 과제를 자유롭게 사용하여 배운 내용을 테스트해 보세요.

질문에 답하세요

질문 1

테마를 정의하는 데 사용되는 태그는 무엇인가요?

<style>

<theme>

<meta-tag>

<styling>

질문 2

다음 중 스타일을 잘못 사용하는 것은 무엇인가요?

▢ 뷰의 제약 조건을 지정합니다.

▢ 제목의 배경색을 지정합니다.

▢ 뷰 간에 글꼴 크기를 통일합니다.

▢ 뷰 그룹의 텍스트 색상을 지정합니다.

질문 3

테마와 스타일은 어떻게 다른가요?

▢ 테마는 전체 앱에 적용되지만 개발자가 특정 뷰에 스타일을 적용할 수 있습니다.

▢ 테마는 다른 테마에서 상속될 수 없지만 스타일은 다른 스타일에서 상속될 수 있습니다.

▢ 스타일은 다른 스타일에서 상속될 수 없지만 테마는 다른 테마에서 상속될 수 있습니다.

▢ 테마는 Android 시스템이 제공하고 스타일은 개발자가 정의합니다.

질문 4

앱의 TextView에 글꼴 크기를 12sp로 설정하는 Theme, 글꼴 크기를 14sp로 설정하는 정의된 스타일, 16spfontSize 속성이 있는 경우 화면에 표시되는 글꼴의 크기는 얼마인가요?

12sp

14sp

16sp

18sp

다음 강의 시작: 10.2: Material Design, dimens, and colors

이 과정의 다른 Codelab 링크는 Android Kotlin 기초 Codelab 방문 페이지를 참고하세요.