Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo cambiar el menú emergente del color de fondo android

Genero cada opción de menú desde la base de datos de consulta. Aquí está mi código.

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

Todo está bien, pero el problema es cómo cambiar el color del menú de opción o el color de fondo del menú emergente (de negro a blanco), ¿Es posible? Gracias

10 Solutions collect form web for “Cómo cambiar el menú emergente del color de fondo android”

Añadir estilo popupMenu a ur 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> 

Si utiliza AppCompact-v7, puede diseñar PopupMenu como se indica a continuación:

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

NOTA: PopMenu siempre funciona con el contexto de la actividad, no con el contexto de la aplicación.

Al principio defina su estilo en para el fondo de menú emergente en el archivo styles.xml en mi caso yo uso esto …

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

Aquí quiero cambiar el fondo del menú emergente en una actividad específica, por lo que aplicar el tema (android: theme = "@ style / AppTheme") con la declaración de actividad y seguramente está funcionando. Otra cosa importante para crear el menú emergente con este código PopupMenu popup = new PopupMenu (su actividad, viewObj);

En el diseño en el que está dando la barra de herramientas, especifique el tema por aplicación: 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> 

Si utiliza el tema de AppCompat, utilice

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

de otra manera

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

Agregue por favor las líneas siguientes en el archivo del estilo xml, espero que esto ayude para la aplicación del diseño material. 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> 

Para más detalles refiera este acoplamiento http://www.viralandroid.com/2016/01/how-to-change-background-and-text-color-of-android-actionbar-option-menu.html

Por favor, consulte cómo el estilo de PopupMenu? Para más explicaciones. Yo estaba enfrentando el mismo problema, buscado mucho, pero encontró la solución en el enlace mencionado.

PopupMenu se crea de la siguiente manera:

 PopupMenu popup = new PopupMenu(context, view); 

PopupMenu toma el estilo del contexto que se pasa, pasando actividad como el contexto resuelto mi problema.

  <item name="android:actionBarPopupTheme">@style/popupNew</item> </style> <style name="popupNew" parent="android:ThemeOverlay.Material.Light"> <item name="android:colorBackground">#ffffff</item> </style> 
  **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" > 

Puedes usar un diseño personalizado como este ..

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

Diseño de diseño como quieras .. espero que esto ayuda ..

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.