Come forzare PopupMenu a sovrapporsi all'ancora? Vorrei ricreare qualcosa di simile a this:Come forzare PopupMenu a sovrapporsi all'ancora?
risposta
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>
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.
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.
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. –
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 –
Dopo aver passato ore ho notato che ho usato il 'android.widget.PopupMenu' di default invece di' android.support.v7.widget.PopupMenu'. – danijar
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>
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>
Paritosh La risposta di Tonk è il modo corretto per farlo. Dovresti accettare quella risposta. –