首页 文章

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

提问于
浏览
20

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

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());
}

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

11 回答

  • 0

    将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>
    

    manifest.xml文件:

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
    .............
    </application>
    
  • 2

    如果您使用的是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>
    

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

  • -1

    请在样式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>
    

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

  • 0

    如果您正在使用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>
    

    除此以外

    <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>
    
  • 8

    首先在styles.xml文件中为弹出菜单背景定义你的风格,在我的情况下我使用这个...

    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
    </style>
    <style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
        <item name="android:popupBackground">@android:color/holo_green_light</item>
    </style>
    

    在这里我想更改特定活动中的弹出菜单背景,因此应用主题(android:theme =“@ style / AppTheme”)与活动声明,它肯定有效 . 使用此代码创建弹出菜单的另一个重要事项PopupMenu popup = new PopupMenu(your activity,viewObj);

  • 35

    在您提供工具栏的布局中,通过app指定主题:popupTheme =“@ style / MyPopupMenu”

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:minHeight="?attr/actionBarSize"
        android:background="#2196F3"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        style="@style/DrawerArrowStyle"
        app:popupTheme="@style/MyPopupMenu">
    
    </android.support.v7.widget.Toolbar>
    
  • 2

    有关更多说明,请参阅How to style PopupMenu? . 我面临同样的问题,搜索了很多,但在提到的链接中找到了解决方案 .

    PopupMenu按以下方式创建:

    PopupMenu popup = new PopupMenu(context, view);
    

    PopupMenu采用传递的上下文样式,传递Activity作为上下文解决了我的问题 .

  • 4

    将PopupMenu主题添加到AppTheme:

    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="popupTheme">@style/PopupMenuTheme</item>
    </style>
    
    <style name="PopupMenuTheme" parent="Theme.AppCompat.Light">
        <item name="android:background">@android:color/white</item>
    </style>
    

    manifest.xml文件:

    <application
        ...
        android:theme="@style/AppTheme">
        ...
    </application>
    
  • 0

    In Style Your Application Theme

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
         <!-- Customize your theme here. -->
     <item name="android:itemBackground">@color/list_background</item>
     <item name="android:itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
        </style>
    

    For Text Appearence

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
            <item name="background">@color/list_item_title</item>
            <item name="titleTextStyle">@style/MyActionBarTitle</item>
        </style>
        <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
            <item name="android:textColor">@color/list_item_title</item>
        </style>
    
        <style name="MyActionBar.MenuTextStyle"
            parent="style/TextAppearance.AppCompat.Widget.ActionBar.Title">
            <item name="android:textColor">@color/list_item_title</item>
            <item name="android:textStyle">normal</item>
            <item name="android:textSize">16sp</item>
            <item name="android:gravity">center</item>
        </style>
    

    And Use App Theme In Menifest like:

    <application
            android:name="Your Package"
            android:allowBackup="true"
            android:icon="@drawable/launcher_icon"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
  • 0
    <style name="AppTheme1" parent= "android:Theme.DeviceDefault">
    
        <item name="android:actionBarPopupTheme">@style/popupNew</item>
    </style>
    
    <style name="popupNew" parent="android:ThemeOverlay.Material.Light">
        <item name="android:colorBackground">#ffffff</item>
    </style>
    
  • 8

    您可以使用这样的自定义布局..

    PopupMenu pop = new PopupMenu(MainActivity.this, v);
    pop.getMenuInflater().inflate(R.menu.main, pop.getMenu());
    pop.show();
    

    你想要的设计布局..希望这有助于..

相关问题