android - 为什么我的弹出菜单是黑色的?

时间:2015-07-10 18:45:04

标签: android popup

我使用内置的Android弹出菜单但结果如下:
enter image description here

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>

5 个答案:

答案 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>