android - 更改 NoActionBar 上的背景颜色弹出菜单
问题描述
我仍然没有找到正确的解决方案来更改 PopupMenu 的背景颜色。但在这种情况下,我AppTheme.NoActionBar
出于特殊原因使用。这是我的风格
<style name="DarkThemeNoAppBar" parent="AppTheme.NoActionBar">
<item name="backgroundcolor">#3d3b3b</item>
<item name="cardbackground">#5e5b5b</item>
<item name="textcolor">#ede7e7</item>
<item name="textcolordrawer">#faf6f6</item>
<item name="tintcolor">#d9d4d4</item>
<item name="buttoncolor">#45b6ac</item>
<item name="texttitlecolor">#ede7e7</item>
<item name="backgroundcolorlayout">#181818</item>
<item name="android:itemBackground">#181818</item>
<item name="android:textColor">#ede7e7</item>
<item name="popupMenuStyle">@style/popupMenuDarkStyle</item>
</style>
<style name="popupMenuDarkStyle" parent="Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">#181818</item>
</style>
如果您看到popupMenuStyle
,这popupMenuDarkStyle
不会在 UI 中产生任何影响。谷歌中的许多文献都解决了这个问题,但它只是为了Theme.AppCompat.Light.DarkActionBar
但在我的情况下我需要使用AppTheme.NoActionBar
. 请有人给我一些建议。
UPDATE 2 下面是第二次尝试
<style name="DarkThemeNoAppBar" parent="AppTheme.NoActionBar">
<item name="backgroundcolor">#3d3b3b</item>
<item name="cardbackground">#5e5b5b</item>
<item name="textcolor">#ede7e7</item>
<item name="textcolordrawer">#faf6f6</item>
<item name="tintcolor">#d9d4d4</item>
<item name="buttoncolor">#45b6ac</item>
<item name="texttitlecolor">#ede7e7</item>
<item name="backgroundcolorlayout">#181818</item>
<item name="android:itemBackground">#181818</item>
<item name="android:textColor">#ede7e7</item>
<item name="android:popupMenuStyle">@style/popupMenuDarkStyle</item>
</style>
<style name="popupMenuDarkStyle" parent="ThemeOverlay.AppCompat.Light">
<item name="android:popupBackground">#181818</item>
</style>
我的 PopupMenu 附加在 optionMenu 上(在 Burger 按钮上),这里是如何在 Activity 中创建 optionsMenu。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Manual add menu
menu.add(0, 1, 1, DesignUtil.menuIconWithText(getResources()
.getDrawable(R.drawable.ic_bookmark_black), "Bookmark"));
menu.add(0, 2, 1, DesignUtil.menuIconWithText(getResources()
.getDrawable(R.drawable.ic_settings_black_24dp), "Settings"));
return true;
}
是的,弹出菜单显示正确但背景颜色仍然无法更改
解决方案
试试这个,它对我有用
步骤 1.创建新样式
<style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textColor">#2FAC7E</item>
<item name="android:textSize">18sp</item>
<item name="android:itemBackground">#181818</item>
</style>
步骤 2.在您添加 PopUpMenu 的活动中添加此行
Context wrapper = new ContextThemeWrapper(activity, R.style.popupMenuStyle);
final PopupMenu popup = new PopupMenu(wrapper, view);
推荐阅读
- python - 是否可以获取我在 Facebook Messenger 上发送的所有消息?
- deep-learning - 使用预训练的 VGG-16 从图像中获取特征向量
- python - 如何使用pickle.load()读取完整文件?
- php - Array to string conversion for calculate discount (not resolved in similar question)
- scala - 是 scala REPL 打印的实例名称/ID 吗?
- javascript - Firebase Web unlink password success but the email still exist in console
- python - 从熊猫数据框中的dict中提取值
- react-native - Get rid of border for Top Tab (react-navigation)
- algorithm - Find Min-cut in a graph?
- flutter - 使用 Flutter Web 从 Cloud Storage 读取数据