Theme.AppCompat는 전체 앱의 글로벌 테마를 설정하는 데 사용됩니다. ThemeOverlay.AppCompat는 특정보기, 특히 도구 모음에 대한 해당 테마를 재정의 (또는 "오버레이")하는 데 사용됩니다.
이것이 왜 필요한지에 대한 예를 살펴 보겠습니다.
ActionBar가있는 앱 테마
ActionBar는 일반적으로 앱에 표시됩니다. colorPrimary
값 을 설정하여 색상을 선택할 수 있습니다 . 그러나 테마를 변경하면 ActionBar의 텍스트 색상이 변경됩니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
기본 색상은 진한 파란색이므로 검은 색 텍스트는 읽기 어렵 기 때문에 작업 표시 줄에서 밝은 텍스트 색상을 사용하는 테마 중 하나를 사용해야합니다.
ActionBar 숨기기 및 도구 모음 사용
Theme.Material 대신 Theme.AppCompat를 사용하는 요점은 이전 버전의 Android에서 머티리얼 디자인 테마를 사용할 수 있도록 허용하는 것입니다. 문제는 이전 버전의 Android가 ActionBar를 지원하지 않는다는 것입니다. 따라서 문서 는 ActionBar를 숨기고 레이아웃에 툴바를 추가 할 것을 권장합니다. ActionBar를 숨기려면 NoActionBar
테마 중 하나를 사용해야 합니다. 다음 이미지는 ActionBar가 숨겨진 툴바를 보여줍니다.
하지만 DarkActionBar가있는 Light 테마와 같은 것을 원한다면 어떻게해야합니까? NoActionBar를 사용해야하므로 옵션이 아닙니다.
앱 테마 재정의
여기에 ThemeOverlay가 있습니다. 툴바 xml 레이아웃에서 Dark ActionBar 테마를 지정할 수 있습니다.
<android.support.v7.widget.Toolbar
...
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
이것은 마침내 우리가 원하는 효과를 가질 수있게합니다. Dark.ActionBar 테마 는이 특별한 경우에 Light 앱 테마를 오버레이 합니다.
- 앱 테마 :
Theme.AppCompat.Light.NoActionBar
- 툴바 테마 :
ThemeOverlay.AppCompat.Dark.ActionBar
팝업 메뉴를 밝게하려면 다음을 추가 할 수 있습니다.
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
추가 연구
나는 실험과 다음 기사를 통해 이것을 배웠다.