OSDN Git Service

Introduce indirection for base micro themes.
authorBryce Lee <brycelee@google.com>
Thu, 28 May 2015 18:03:57 +0000 (11:03 -0700)
committerBryce Lee <brycelee@google.com>
Thu, 28 May 2015 18:03:57 +0000 (11:03 -0700)
This is needed, since overlays must add/modify items to base themes, but
simply declaring the style in an overlay will override the parent. To
ensure the true parent is never overridden, a base theme is introduced
that both the regular theme and the overlay can inherit from.

Bug: 21425951
Change-Id: I0967d0b4ddf12e9765bc321a7485a6dbdfef0b1e

core/res/res/values/themes_micro.xml

index 112afa6..8bf635e 100644 (file)
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <resources>
-    <style name="Theme.Micro" parent="Theme.Material.NoActionBar">
+    <style name="Theme.MicroBase" parent="Theme.Material.NoActionBar">
         <item name="alertDialogTheme">@style/Theme.Micro.Dialog.Alert</item>
         <item name="alertDialogStyle">@style/AlertDialog.Micro</item>
         <item name="dialogTheme">@style/Theme.Micro.Dialog</item>
         <item name="windowOverscan">true</item>
     </style>
 
-    <style name="Theme.Micro.Light" parent="Theme.Material.Light.NoActionBar">
+    <style name="Theme.Micro" parent="Theme.MicroBase">
+    </style>
+
+    <style name="Theme.Micro.LightBase" parent="Theme.Material.Light.NoActionBar">
         <item name="alertDialogTheme">@style/Theme.Micro.Dialog.Alert</item>
         <item name="alertDialogStyle">@style/AlertDialog.Micro</item>
         <item name="dialogTheme">@style/Theme.Micro.Dialog</item>
         <item name="windowOverscan">true</item>
     </style>
 
-    <style name="Theme.Micro.Dialog" parent="Theme.Material.Light.Dialog">
+    <!-- Indirection needed for overlays to make sure there is a common base parent -->
+    <style name="Theme.Micro.Light" parent="Theme.Micro.LightBase">
+    </style>
+
+    <style name="Theme.Micro.DialogBase" parent="Theme.Material.Light.Dialog">
         <item name="windowTitleStyle">@android:style/DialogWindowTitle.Micro</item>
         <item name="windowIsFloating">false</item>
         <item name="windowFullscreen">true</item>
         <item name="windowOverscan">true</item>
     </style>
 
+    <!-- Indirection needed for overlays to make sure there is a common base parent -->
+    <style name="Theme.Micro.Dialog" parent="Theme.Micro.DialogBase">
+    </style>
+
     <style name="Theme.Micro.Dialog.Alert">
         <item name="windowTitleStyle">@style/DialogWindowTitle.Micro</item>
         <item name="alertDialogStyle">@style/AlertDialog.Micro</item>