在具有可配置主题的应用程序中,如何设置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
的父母应该动态变化吗?还有别的吗?