如何更改背景颜色弹出菜单android

use*_*337 27 android menu colors popup

我从查询数据库生成菜单的每个选项.这是我的代码.

final PopupMenu popupMenu = new PopupMenu(getBaseContext(), v); 
SQLiteDatabase db = AdapterDb.getReadableDatabase(); 
Cursor cursor = db.rawQuery(sql, null);
int ctritem = 0;
if (cursor.moveToFirst()) {
    popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, "ALL ITEMS"); 
    do {
        ctritem++;   
        popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, cursor.getString(0)); 
    } while (cursor.moveToNext());
}
Run Code Online (Sandbox Code Playgroud)

一切都还可以,但问题是如何改变选项菜单的颜色或弹出菜单的背景颜色(从黑色到白色),是否可能?谢谢

use*_*543 44

将popupMenu样式添加到您的AppTheme:

<style name="AppTheme" parent="android:Theme.Light">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

manifest.xml文件:

 <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
.............
</application>
Run Code Online (Sandbox Code Playgroud)

  • 阴影怎么样?以下它失去了阴影 (4认同)
  • 您是否控制了传递给构造函数的上下文?我在使用时遇到了同样的问题:PopupMenu popup = new PopupMenu(mContext,v); 我将错误的上下文传递给PopupMenu构造函数. (3认同)
  • 这对我有用。我可以更改 Popupmenu 的文本颜色吗? (2认同)
  • 如果我使用AppTheme.NoActionBar,该怎么做.我的意思是它不使用我使用noactionbar. (2认同)
  • @silverFoxA 阴影可以在样式中使用 setElevation 进行设置。`&lt;style name="PopupMenu" parent="@android:style/Widget.PopupMenu"&gt; &lt;item name="android:popupBackground"&gt;​​@android:color/white&lt;/item&gt; &lt;item name="android:popupElevation" &gt;3dp&lt;/item&gt; &lt;/style&gt;` (2认同)
  • 我认为此答案不完整,仅阅读此不完整的帖子就无法解决问题 (2认同)

Moh*_*j S 11

请在样式xml文件中添加以下行,希望这对材料设计应用有所帮助. Style.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>

    <!-- To change the popup menu and app text color  -->
    <item name="android:textColor">@color/colorPrimary</item>

    <!-- To change the background of options menu-->
    <item name="android:itemBackground">@color/skyBlue</item>
</style>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此链接http://www.viralandroid.com/2016/01/how-to-change-background-and-text-color-of-android-actionbar-option-menu.html

  • 为我工作!2020 年 2 月。 (2认同)

Kal*_*esh 9

如果您使用的是AppCompact-v7,那么您可以按如下方式设置PopupMenu的样式:

 <style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="popupMenuStyle">@style/popupMenuStyle</item>
</style>

<style name="popupMenuStyle" parent="Widget.AppCompat.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

注意:PopMenu始终使用活动上下文,而不是使用应用程序上下文.


use*_*215 5

如果您使用的是AppCompat主题,请使用

<style name="PopupMenu" parent="Widget.AppCompat.PopupMenu">
    <item name="android:popupBackground">@android:color/black</item>

</style>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="popupMenuStyle">@style/PopupMenu</item>
</style>
Run Code Online (Sandbox Code Playgroud)

除此以外

<style name="AppTheme" parent="android:Theme.Light">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>

</style>
Run Code Online (Sandbox Code Playgroud)

  • AppCompat 版本对我不起作用。菜单背景仍然是白色的。 (2认同)