He intentado cambiar el fondo de popupmenu, pero mi aplicación no funciona.

Este es mi código:

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

Aplicar en AndroidManifest.xml

<application
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/MyHoloLight">

OriginalEl autor user1854307 | 2014-03-11

10 Comentarios

  1. 26

    los siguientes estilos de trabajo a la perfección para mí.

    <style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:textColor">@color/color_white</item>
        <item name="android:itemBackground">@color/color_red</item>
    </style>

    aquí, el padre debe ser el AppTheme padre

    y en su código estas líneas.

    Context wrapper = new ContextThemeWrapper(context, R.style.popupMenuStyle);
    PopupMenu popup = new PopupMenu(wrapper, v);

    espero que funcione.

    Esta es probablemente la única respuesta que funciona sin ningún tipo de molestia. Felicitaciones!
    Me pasan un montón de días tratando de conseguir menú de color de trabajo. Esta solución es la única que funcionan a la perfección. Estoy usando AppCompact y MenuPopupHelper. Gracias a @Raju !
    Gracias, funciona perfectamente
    Trabajó para mí gracias amigo

    OriginalEl autor Raju

  2. 5

    Si bgPopumMenu es su imagen, a continuación, utilizar este.

    <style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@drawable/bgPopumMenu</item>
    </style>

    Que usted necesita para aplicar el estilo a tu AppTheme. Así que trate de esto.

    <style name="AppTheme" parent="android:Theme.Holo.Light">
    <item name="android:popupMenuStyle">@style/popupMenuStyle</item>
    </style>
    <style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@color/bgPopumMenu</item>
    </style>
    Esto no funciona – fondo sigue siendo gris.
    Es bgPopupMenu es la imagen o el nombre del color??
    bgPopupMenu – este color.
    han creado color archivo xml?
    esto es inútil

    OriginalEl autor Piyush

  3. 3

    He hecho algunos cambios de @Raju del código y de los siguientes estilos de trabajo para mí,

    Context wrapper = new ContextThemeWrapper(context,R.style.popupMenuStyle);
    PopupMenu popup = new PopupMenu(wrapper, YourView);

    y esta es mi estilo,

    <style name="popupMenuStyle" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item>
        <item name="android:textColor">@color/White</item>
    </style>
    
    <style name="MyApp.PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">@color/color_semi_transparent</item>       
    </style>
    Trabajó para mí… Gracias !!!

    OriginalEl autor varotariya vajsi

  4. 1

    Lo RESUELTO,

    PopupMenu popup = new PopupMenu(context, view);

    Arriba de código que he usado contexto de tipo de Activity no de Context tipo.

    Chill !

    OriginalEl autor Ali Akram

  5. 0

    lo que acerca de esto :

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.menu,menu);
        setMenuBackground(); 
        return true;    
    }

    y escribir esto en el setMenuBackground() método

    protected void setMenuBackground(){                              
            getLayoutInflater().setFactory( new Factory() {  
                public View onCreateView(String name, Context context, AttributeSet attrs) {
                    if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
                        try { //Ask our inflater to create the view  
                            LayoutInflater f = getLayoutInflater();  
                            final View view = f.createView( name, null, attrs );  
                            /* The background gets refreshed each time a new item is added the options menu.  
                            * So each time Android applies the default background we need to set our own  
                            * background. This is done using a thread giving the background change as runnable 
                            * object */
                            new Handler().post( new Runnable() {  
                                public void run () {  
                                    //sets the background here
                                    view.setBackgroundResource( R.drawable.bgPopumMenu);
                                    //sets the text color              
                                    ((TextView) view).setTextColor(Color.BLACK);
                                    //sets the text size              
                                    ((TextView) view).setTextSize(18);
                    }
                            } );  
                        return view;
                    }
                catch ( InflateException e ) {}
                catch ( ClassNotFoundException e ) {}  
            } 
            return null;
        }}); 
    }
    Error: Una fábrica ya ha sido establecido en este LayoutInflater
    debido a un pequeño cambio en la biblioteca de compatibilidad, consulte este enlace para obtener más información: stackoverflow.com/questions/13415284/…

    OriginalEl autor Lucian Novac

  6. 0

    Intentar definir android:actionBarWidgetTheme en el tema:

    <style name="MyHoloLight" parent="android:Theme.Holo.Light">
        <item name="android:popupMenuStyle">@style/popupMenuStyle</item>
        <item name="android:actionBarWidgetTheme">@style/Theme.Example.Widget</item>
    </style>
    <style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
        <item name="android:popupBackground">@color/bgPopumMenu</item>
    </style>
    <style name="Theme.Example.Widget" parent="@style/Theme.AppCompat">
        <item name="popupMenuStyle">@style/popupMenuStyle</item>
        <item name="dropDownListViewStyle">@style/DropDownListView.Example</item>
    </style>
    <style name="DropDownListView.Example" parent="@style/Widget.AppCompat.ListView.DropDown">
        <item name="android:listSelector">@color/bgPopumMenu_whenSelected</item>
    </style>

    OriginalEl autor paaacman

  7. 0

    Si bgPopumMenu es su imagen, a continuación, utilizar este

        <item name="android:panelBackground">@drawable/bgPopumMenu</item>

    Que acaba de poner directamente en su AppTheme como

    <style name="AppTheme" parent="android:Theme.Holo.Light">
        <item name="android:panelBackground">@drawable/bgPopumMenu</item>
    </style>

    OriginalEl autor Murphybro2

  8. 0

    Si usted está usando tema personalizado :

    1. En un Manifiesto : @style/MyMaterialTheme es mi tema personalizado :

        <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:supportsRtl="true"
              android:theme="@style/MyMaterialTheme">
    2. Utilizar este código : R.style.popupMenuStyle para el menú emergente que aparece en la clase java :

    Context wrapper = new ContextThemeWrapper(getContext(), R.style.popupMenuStyle);
    PopupMenu popup = new PopupMenu(wrapper, v);
    
    //Inflating the Popup using xml file
    popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
    
    MenuPopupHelper menuHelper = new MenuPopupHelper(wrapper, (MenuBuilder) popup.getMenu(), v);
    menuHelper.setForceShowIcon(true);
    menuHelper.setGravity(Gravity.RIGHT);
    1. este es el estilo personalizado de menú emergente para su propio fondo de la imagen
    <style name="popupMenuStyle" parent="@android:style/Widget.PopupMenu">
        <item name="android:popupBackground">@drawable/dropdown_bg</item>
    </style>
    1. a continuación, cambiar en su propio tema «popupMenuStyle»

      <style name="MyMaterialTheme" parent="MyMaterialTheme.Base">
      
          </style>
      
          <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
              <item name="windowNoTitle">true</item>
              <item name="windowActionBar">false</item>
              <item name="colorPrimary">@color/colorPrimary</item>
              <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
              <item name="colorAccent">@color/colorPrimary</item>
      
              <item name="popupMenuStyle">@style/popupMenuStyle</item>
              <item name="android:popupMenuStyle">@style/popupMenuStyle</item>
          </style>

    OriginalEl autor Heena Arora

  9. 0

    Usted puede crear fácilmente un estilo de menú emergente y aplicar ese estilo a un tema y se puede asignar el tema a la Actividad/Actividad de los Padres*** en el manifiesto de android como este

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

    Crear @style/PopupMenu como este

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

    Asignar el MyThemePopup tema a la Actividad/Actividad de los Padres*** en el AndroidManifest como

    <activity
                android:name=".Activity"
                android:label="@string/title_activity"
                android:screenOrientation="portrait"
                android:theme="@style/MyThemePopup"/>

    ***Cuando usted utiliza el fragmento de aplicar el tema para que el padre de la actividad definida en el AndroidManifest

    OriginalEl autor Manoranjan

Dejar respuesta

Please enter your comment!
Please enter your name here