2015-04-04 8 views

Odpowiedz

24

W głównej użytku stylu <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>, gdzie

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

Dla stylu Lollipop musi być w wartościach-V21.

+1

dziękuję bardzo. uratowałeś mój dzień. – DroidDev

+1

powyższe rozwiązanie nie działa dla mnie. Możesz podać mi rozwiązanie tego linku. http://stackoverflow.com/questions/34738893/how-to-show-menu-popup-exact-below-actionbar?noredirect=1#comment57223525_34738893 – Vasant

0

Dzięki powyższemu rozwiązaniu miałem problem z tym, że tło pozycji menu było przezroczyste, a także było to pewnego rodzaju blokowanie każdej akcji w oknie, dopóki nie kliknę elementu menu. Dla tych, którzy mają mój problem, sugeruję dodanie menu podręcznego do pozycji menu. Na przykład, mam ten przedmiot na moim menu.xml:

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

następnie na moim OnOptionsItemsSelected metody (po pompowania moje menu do działalności):

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

Dzięki takiemu rozwiązaniu, opcji menu zawsze są wyświetlane poniżej klikniętego elementu menu. Jeśli masz jakieś pytania, po prostu mnie zapytaj!