Zastanawiam się również nad tym, więc napisałem prostą aplikację testową, aby spróbować. Zasoby plik wygląda tak:
<!--
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>
więc zastosować AppTheme.TestTheme do aktywności w pliku manifestu. AppTheme powoduje, że okno pełnego ekranu & nie ma paska tytułu. Theme.Light tworzy światło tła okna zamiast domyślnego zaciemnienia. Po określeniu atrybutu parent="android:Theme.Light"
okno jest białe, a nie pełnoekranowe - oznacza to, że atrybut parent="..."
ma pierwszeństwo przed prefiksem nazwy, a hierarchia wygląda na TestTheme <- Theme.Light (light) <- Theme (dark)
.
Z parent = "android: Theme.Light" usunięty, ekran jest ciemny i pełny ekran, więc hierarchia TestTheme <- AppTheme (fullscreen) <- AppBaseTheme <- Theme (dark)
jest na miejscu.
Po określeniu parent="..."
nie ma znaczenia, kiedy usunę prefiks. Tak więc wydaje się, że parent="..."
ma zdecydowanie pierwszeństwo. AppTheme.TestTheme nie dziedziczy od obojga rodziców naraz.
Teraz, patrząc na domyślny plik themes.xml, wydaje się, że Theme.Holo.Light dziedziczy z Theme.Light, a następnie wszystkie rzeczy Holo są określane ręcznie w jego opisie. Nazwali ją Theme.Holo.Light nie dlatego, że dziedziczy po Holo, ale dlatego, że chcieli nazwy, która opisuje ją jako "lekką wersję Holo". A ponieważ chcieli być $ @ &!
Zostało to przetestowane na Gingerbread 2.3.3.
To było naprawdę pomocne. Dziękuję Ci! –
Dwa lata, ale nadal mi pomogło. To powinno naprawdę pójść gdzieś w oficjalnych dokumentach do stylizacji. – jenzz
Ciekawe .. To nie działa dla mnie: Android Studio 2.3.3 Build # AI-+162,4069837, zbudowany na 6 czerwca 2017 JRE: 1.8.0_112-release-B06 x86_64 JVM: OpenJDK 64-bitowego serwera VM od JetBrains sro – Maciej