2015-01-28 19 views

risposta

1

Impostazione android:dropDownVerticalOffset mi ha permesso a sovrapporsi vista ancoraggio:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="popupMenuStyle">@style/PopupMenu</item> 
</style> 

<style name="PopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu"> 
    <item name="android:dropDownVerticalOffset">-36dip</item> 
</style> 
+0

Paritosh La risposta di Tonk è il modo corretto per farlo. Dovresti accettare quella risposta. –

0

Hai guardato utilizzando PopupWindow invece? Quelli offrono un po 'più di flessibilità nel loro posizionamento. È possibile specificare la vista di ancoraggio e uno scostamento xey che consente di definire la sovrapposizione.

11

Impostazione overlapAnchor mi ha permesso di sovrapporre vista l'ancora senza impostare offset:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="popupMenuStyle">@style/PopupMenu</item> 
</style> 

<style name="PopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu"> 
    <item name="overlapAnchor">true</item> 
</style> 

Il PopupMenu avvolge una ListPopupWindow al suo interno. Questo ListPopupWindow esegue il wrapping di AppCompatPopupWindow utilizzando questo attributo overlapAnchor. Tutto questo nella libreria di supporto.

+0

Questa sembra la soluzione più elegante, grazie! Tuttavia, ho dovuto aggiungere lo stile sia negli stili predefiniti usando overlapAnchor (come sopra) e negli stili-v21 usando android: overlapAnchor per ottenere lo stesso comportamento su entrambi i dispositivi pre-lecca-lecca e lecca-lecca. –

+0

C'è un modo per usare overlapAnchor senza usare PopupMenu dalla libreria di supporto? Ha un fastidioso bug: https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=popupmenu%20scroll&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort= & id = 135439 –

+0

Dopo aver passato ore ho notato che ho usato il 'android.widget.PopupMenu' di default invece di' android.support.v7.widget.PopupMenu'. – danijar

8

Alternativa a Paritosh Tonk 's risposta:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="popupMenuStyle">@style/Widget.AppCompat.Light.PopupMenu.Overflow</item> 
</style> 

o per tema scuro:

<style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar"> 
    <item name="popupMenuStyle">@style/Widget.AppCompat.PopupMenu.Overflow</item> 
</style> 
0

sono venuto qui quando si cerca di capire come creare un menu a comparsa che si sovrappone il suo ancoraggio quando l'ancora è nell'azioneBar. Poiché questo è un risultato di ricerca prominente per questo problema, voglio lasciare la risposta qui anche se non sono sicuro se la soluzione potrebbe funzionare per OP.

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" > 
    <!-- This item will expand into a submenu --> 
    <item 
     android:id="@+id/anchor" 
     android:icon="@drawable/ic_anchor" 
     android:title="@string/anchor" 
     app:showAsAction="always"> 
     <menu> 
      <item 
       android:id="@+id/subMenuItemOne" 
       android:showAsAction="never" 
       android:title="SubMenuItemOne"/> 
      <item 
       android:id="@+id/subMenuItemTwo" 
       android:showAsAction="never" 
       android:title="SubMenuItemTwo"/> 
     </menu> 
    </item> 
</menu>