Ответ 1
Мне тоже интересно об этом, поэтому я написал простое тестовое приложение, чтобы попробовать. Файл ресурсов выглядит следующим образом:
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="AppTheme.TestTheme" parent="android:Theme.Light">
</style>
Поэтому я применяю AppTheme.TestTheme к активности в файле манифеста. AppTheme делает окно полноэкранным и не имеет заголовка. Theme.Light делает фона фона окна вместо темного по умолчанию. Когда указан атрибут parent="android:Theme.Light"
, это окно является белым, а не полноэкранным - это означает, что атрибут parent="..."
имеет приоритет над префиксом имени, а иерархия выглядит как TestTheme <- Theme.Light (light) <- Theme (dark)
.
С отключенным parent = "android: Theme.Light" экран темный и полноэкранный, поэтому иерархия TestTheme <- AppTheme (fullscreen) <- AppBaseTheme <- Theme (dark)
находится на месте.
Когда указано parent="..."
, при удалении префикса это не имеет значения. Таким образом, parent="..."
, похоже, определенно имеет приоритет. AppTheme.TestTheme не наследуется от обоих родителей сразу.
Теперь, смотря на файл themes.xml по умолчанию, кажется, что Theme.Holo.Light наследуется от Theme.Light, а затем все материалы Holo указаны вручную в его описании. Поэтому они назвали его Theme.Holo.Light не потому, что он наследует от Holo, а потому, что им нужно имя, которое описывает его как "легкую версию Holo". И потому, что они хотели запутаться в [email protected]&! Ing.
Это было протестировано на Gingerbread 2.3.3.