我使用内置的Android弹出菜单但结果如下:
PopupMenu popupMenu = new PopupMenu(context, holder.menu);
popupMenu.getMenuInflater().inflate(R.menu.item_menu, popupMenu.getMenu());
和item_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/one"
android:title="item1"/>
<item
android:id="@+id/two"
android:title="item2"/>
<item
android:id="@+id/three"
android:title="item3"/>
</menu>
和主题的样式
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="popupMenuStyle">@style/PopupMenu</item>
</style>
<style name="PopupMenu" parent="Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">#FFFFFF</item>
</style>
答案 0 :(得分:4)
可能是Context
类型:
我的AppTheme的家长是Theme.AppCompat.Light.DarkActionBar
,我的活动的家长是AppTheme
// Background = black and textColor = black
PopupMenu popupMenu = new PopupMenu(getBaseContext() , view); // don't use getBaseContext()
// Background = black and textColor = white
PopupMenu popupMenu = new PopupMenu(getApplicationContext() , view); // don't use getApplicationContext()
所以你必须使用Activity Context:
// Background = light and textColor = dark
PopupMenu popupMenu = new PopupMenu(YourActivity.this , view); // this is ok
答案 1 :(得分:1)
在values-v14 / styles.xml中添加以下内容:
<style name="PopupMenu" parent="Widget.AppCompat.Light.PopupMenu">
<item name="android:popupBackground">#FFFFFF</item>
</style>
并更改PopupMenu样式:
union sockaddr_u {
struct sockaddr_storage ss;
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
};
答案 2 :(得分:1)
检查清单文件中的应用主题它会影响视图...
答案 3 :(得分:0)
人们应该了解android的工作原理:
<style name="AppTheme.Toolbar" parent="Theme.AppCompat.DayNight.DarkActionBar">
//This line changes the color of text in Toolbar
<item name="android:textColorPrimary">@color/black_color</item>
//This line changes the color of icons in toolbar (back, overfmenu_convmenu icons)
<item name="android:textColorSecondary">@color/white</item>
</style>
这是一个工具栏主题。现在查看父级parent="Theme.AppCompat.DayNight.DarkActionBar"
这是一个黑暗的android主题,因此android内部绘制了一个白色弹出窗口和白色图标。如果您使用浅色,则Theme.AppCompat.NoActionBar
之类的主题将以黑色显示。您可以控制+单击并进入这些主题,并检查已经定义的popupMenu的背景。因此,如果您想要白色背景使用主题
Theme.AppCompat.DayNight.DarkActionBar
现在必须专注于这两行。
//This line changes the color of text in Toolbar
<item name="android:textColorPrimary">@color/black_color</item>
//This line changes the color of icons in toolbar (back, overfmenu_convmenu icons)
<item name="android:textColorSecondary">@color/white</item>
android:textColorPrimary 你需要把黑色变成你的 如果在白色背景上将其设置为白色,则文本将不可见。
答案 4 :(得分:0)
只需添加 popupMenuBackground
属性即可定义主主题中 PopupMenu
的背景颜色。
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
...
<item name="popupMenuBackground">@color/screen_white_background</item>
</style>