8

Popup-Menü auf aufblasen geht für diese Tätigkeit aus dem Bildschirm geht funktioniert, gut für anderePopup-Menü aus dem Bildschirm

enter image description here

Erweiterung benutzerdefinierten AppCompatActivity

Styles:

<style name="AppTheme.ActionBar.TransparentContextTranscition" parent="AppTheme.NoActionBar"> 
    <item name="android:windowActivityTransitions">true</item> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
    <item name="android:windowTranslucentStatus">true</item> 
    <item name="android:windowContentTransitions">true</item> 
    <item name="android:windowLightStatusBar">true</item> 

    <item name="android:itemBackground">@android:color/white</item> 
    <item name="android:textColor">@android:color/black</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
    <item name="android:popupMenuStyle">@style/PopupMenu</item> 
</style> 

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="color">@android:color/white</item> 
</style> 

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu"> 
    <item name="android:popupBackground">@android:color/white</item> 
</style> 

Java-Code

holder.contextMenuView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final PopupMenu popup = new PopupMenu(v.getContext(), v); 
      popup.inflate(R.menu.song_item_menu_album_inner_layout); 
     } 
}); 

Toolbar aufblasen Menü funktioniert

enter image description here

+0

haben Sie Anker verwenden? zeige auch Java-Code. –

+0

aktualisiert @SohailZahid –

+0

Könnte klingen albern, aber das ist mir heute früher auf einem Emulator passiert, ich am Ende versuchte es auf meinem Gerät und es hat gut funktioniert. hat eine saubere und wieder aufgebaut, Problem selbst gelöst. – ziondreamt

Antwort

5

Sieht aus wie ich

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

meine schlechten verwendet wurde. FLAG_LAYOUT_NO_LIMITS, entfernt Limits für das Kontextmenü. (Das ist der Grund, das Kontextmenü aus dem Bildschirm gehen), hoffe, dass für jemanden hilft

+0

Wie verwendet man FLAG_LAYOUT_NO_LIMITS mit Popup-Menü, irgendeine Lösung? –

1

fein Ein einfaches, aber anpassbaren Android Drop-Down-Menü. Es unterstützt Text mit/ohne Icons, Separatoren und sogar vollständig maßgeschneiderte Ansichten

https://github.com/shehabic/Droppy

0

Leider ist Popup-Menü nicht die Größe der Ansicht folgen es im Inneren ist und Umfang erlischt. Ich hatte das gleiche Problem vorher. Und ich weiß, es ist nicht die beste Lösung ist, aber hier geht es:

erstellen gefälschte Ansicht die transparent verwenden als Anker den Rand zu blockieren überschreitet.

Da es jedoch schweben wird, können Sie es nicht auf die Ober- oder Unterseite legen, also achten Sie auf die Höhe, wenn Sie dies versuchen.

Und übrigens NICHT vergessen, dies zu setzen android:anyDensity="True/False"

+0

Wie kann ich es erreichen, können Sie mir einige Schritte –

+0

gut Ich habe nicht Ihr komplettes Layout, so dass ich nicht weiß, wie Ihre LinearLayouts und Floating-Elemente usw. befindet. Aber ich kann die Hauptidee erklären und du wirst es danach bekommen. also das Problem ist, dass Popup ungehorsam Ihre Kanten, so dass Sie es irgendwo ersetzen müssen, wird es auf dem Blick von außen rechts in Ordnung sein? Sie lassen das Popup dort, aber Sie blähen es in einer anderen Ansicht auf, die falsch ist und lokalisierte/sich hin- und herbewegt) lassen Sie uns etwas auf der linken Seite sagen. Wenn das Popup-Menü in ihm aufbläht, wird es perfekt an der richtigen Stelle aussehen. Sie betrügen die Aussichten des Designs. Viel Glück – koksalb

+0

wieder sage ich, es ist definitiv nicht die beste Lösung und es klingt, als ob Sie auf Ihre Codierung Talente aufgeben und versuchen zu betrügen. aber ist es nicht alles? um einen einfachen Weg zu finden, etwas richtig zu machen. Wenn jemand eine Code-bezogene Lösung vorschlägt, kann ich auch meine alte App lernen und reparieren. – koksalb

0

Verwendung im Code final PopupMenu popup = new PopupMenu(v.getContext(), v,Gravity.Right); wenn es nicht funktioniert, dann die v Anker Ansicht ändern., Weil er die Position des Popup einstellen Menü gemäß Ihrer Anforderung.