在具有可配置主題的應用程序中,如何設置app:popupTheme
以匹配整體主題?如何根據應用程序的整體主題更改`app:popupTheme`?
我使用Android Studio的嚮導創建了一個包含導航抽屜的應用程序。然後,我修改了這段代碼,添加了一個複選框,用於在運行時在深色主題和淺色主題之間進行選擇,並在活動上調用setTheme
。完整的代碼可以在this github repo中找到。
在app/src/main/res/values/styles.xml
,Android Studio中生成以下:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
此樣式中app/src/main/res/layout/app_bar_main.xml
使用,也由Android Studio生成:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
的app:popupTheme
屬性確定由所使用的樣式的「 ⋮「菜單。這在使用輕量級主題時看起來很正確,但是當我在運行時將應用程序切換爲黑暗主題時,菜單顏色錯誤。我知道我可以改變AppTheme.PopupOverlay
的母公司,是這樣的:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark"/>
,使其在黑暗的主題工作,但隨後的菜單看起來錯誤的,當光線主題是積極的。
什麼是正確的方式讓菜單的着色動態適應應用程序的整體主題,無論是黑暗還是光? app:popupTheme
應該動態變化嗎? AppTheme.PopupOverlay
的父母應該動態變化嗎?還有別的嗎?