2015-04-04 9 views

risposta

24

In all'utilizzo stile principale <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>, dove

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow"> 
    <!-- Required for pre-Lollipop. --> 
    <item name="overlapAnchor">false</item> 
    <item name="android:dropDownVerticalOffset">-4.0dip</item> 
    <!-- Required for Lollipop. --> 
    <item name="android:overlapAnchor">false</item> 
    <item name="android:dropDownVerticalOffset">4.0dip</item> 
</style> 

Per lo stile Lollipop deve essere in valori-V21.

+1

grazie mille. hai salvato la mia giornata – DroidDev

+1

sopra la soluzione non funziona per me. Potete darmi una soluzione per questo collegamento. http://stackoverflow.com/questions/34738893/how-to-show-menu-popup-exact-below-actionbar?noredirect=1#comment57223525_34738893 – Vasant

0

Con la soluzione di cui sopra ho avuto il problema che lo sfondo del menu era trasparente e inoltre era un po 'come bloccare ogni azione sulla finestra finché non faccio clic sulla voce di menu. Per quelli che hanno il mio problema suggerisco di aggiungere un menu popup alla voce di menu. Ad esempio, ho questa voce sul mio menu.xml:

<item 
    android:id="@+id/new_work_report" 
    android:icon="@drawable/ic_add_white" 
    android:title="@string/action_settings" 
    app:showAsAction="ifRoom"/> 

Poi, il mio metodo OnOptionsItemsSelected (dopo aver gonfiato il mio menu per l'attività):

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) 
{ 
    switch (menuItem.getItemId()) 
    { 
     case android.R.id.home: 
      finish(); 
      break; 

     case R.id.new_work_report: 
      View itemView = FieldSheetActivity.this.findViewById(R.id.new_work_report); 
      PopupMenu popMenu = new PopupMenu(MyActivity.this, itemView); 
      popMenu.getMenu().add("Do something"); 

      popMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() 
      { 

       @Override 
       public boolean onMenuItemClick(MenuItem item) 
       { 
        // Your desired action 

        return true; 
       } 
      }); 
      popMenu.show(); 
      break; 
    } 

    return super.onOptionsItemSelected(menuItem); 
} 

Con questa soluzione, le opzioni del menu vengono sempre visualizzati sotto la voce di menu cliccata. Nel caso abbiate delle domande, chiedetemi!

Problemi correlati