Wie erzwinge PopupMenu den Anker zu überlappen? Ich möchte etwas ähnliches wie this neu:Wie erzwinge PopupMenu den Anker zu überlappen?
Antwort
Einstellung android:dropDownVerticalOffset
mir erlaubt Ankersicht überlappt:
<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>
Haben Sie sich bei PopupWindow statt mit? Diese bieten ein bisschen mehr Flexibilität bei der Platzierung. Sie können die Ankeransicht und einen x- und y-Versatz angeben, mit dem Sie die Überlappung definieren können.
Einstellung overlapAnchor mir erlaubt Ankersicht überlappt ohne Offseteinstellung:
<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>
Die PopupMenu wickelt eine ListPopupWindow in seinem Inneren. Dieses ListPopupWindow umschließt AppCompatPopupWindow mit diesem overlapAnchor-Attribut. All dies in der Support-Bibliothek.
Das scheint die eleganteste Lösung zu sein, danke! Allerdings musste ich das Styling sowohl in den Standardstilen mit overlapAnchor (wie oben) als auch in styles-v21 mit android: overlapAnchor hinzufügen, um das gleiche Verhalten sowohl bei Pre-Lollipop- als auch bei Lollipop-Geräten zu erzielen. –
Gibt es eine Möglichkeit, overlapAnchor zu verwenden, ohne das PopupMenu aus der Support-Bibliothek zu verwenden? Es hat einen nervigen Fehler: 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 –
Nachdem ich Stunden damit verbracht habe, habe ich gemerkt, dass ich das Standard 'android.widget.PopupMenu' anstelle von' android.support.v7.widget.PopupMenu' benutzt habe. – danijar
Alternative zu Paritosh Tonk ‚s Antwort:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="popupMenuStyle">@style/Widget.AppCompat.Light.PopupMenu.Overflow</item>
</style>
oder für dunkles Thema:
<style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar">
<item name="popupMenuStyle">@style/Widget.AppCompat.PopupMenu.Overflow</item>
</style>
ich hier kam, als zu versuchen, herauszufinden, wie ein Popup-Menü zu erstellen, das seinen Anker überlappt wenn Der Anker befindet sich in der ActionBar. Da dies ein prominentes Suchergebnis für dieses Problem ist, möchte ich die Antwort hier lassen, obwohl ich nicht sicher bin, ob die Lösung für OP funktionieren würde.
<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 Tonks Antwort ist der richtige Weg, dies zu tun. Du solltest diese Antwort akzeptieren. –