3

ich in meiner app ein paar PopupMenu s verwenden und sie alle arbeiten alsStyling Android PopupMenu Trennlinien

Menu image

erwartet Aber ich möchte weiße Linien haben, die einzelnen Positionen zu trennen, aber ich kann nicht finden, wo ich das einstellen soll. Ich hatte gehofft, ich könnte zu dem zugrunde liegenden ListView kommen, aber das scheint nicht möglich zu sein. Ich kann auch kein Stilelement sehen, das sich auf die Trennlinie bezieht.

Ist das möglich, wo/wie soll ich das einstellen?

+0

Hilft dies @flexicoder? http://stackoverflow.com/questions/12636101/how-to-style-popupmenu – garfbradaz

+0

@garfbradaz nicht, das ist der Text nicht die Trennlinie – Flexicoder

Antwort

4

Ich habe es gelungen, die Teiler Farbe auf PopupMenu mit dem folgenden Verfahren (basierend auf Hinweise aus dieser Antwort https://stackoverflow.com/a/40017199/285190)

erstellen Stil zu aktualisieren, wie ... folgt

<style name="popupMenuStyle" > 
    <item name="android:textColor">#ffffff</item> 
    <item name="android:itemBackground">#000000</item> 
    <item name="android:divider">#eaeaea</item> 
    <item name="android:dividerHeight">1dp</item> 
</style> 

Dann wenn Sie das Menü erstellen Kontextwrapper erstellen

Context wrapper = new ContextThemeWrapper(mContext, R.style.popupMenuStyle); 
PopupMenu popup = new PopupMenu(wrapper, sourceView); 

Diese eine Trennlinie nicht zeigt, aber die Höhe des Menüs erscheint nicht korrekt berechnet werden Um den neuen Teiler aufzunehmen, wird eine vertikale Bildlaufleiste angezeigt.

Wenn jemand den Grund weiß, fügen Sie bitte einen Kommentar abzugeben

+1

Hey @Flexicoder können Sie versuchen Sie, den Teiler und dividerHeight wie folgt: ' ' I der vertikalen Bildlaufleisten auf diese Weise loswerden könnte. –

+0

Warum funktioniert es nicht für mich auf Android 6.0. Einzige Sache, die für mich arbeitet, ist das Setzen der TextColor und des Hintergrundes aber Teiler zeigt nicht an ... – Vincy

+0

pro unsere UX muss ich Weiß für Hintergrund benutzen und unglücklicherweise Teiler benutzt auch weißen Hintergrund. Wenn ich den Menühintergrund in eine andere Farbe ändere, sehe ich den Teiler, aber nicht, wenn er weiß ist. Wie ändere ich also die Teilerfarbe? @ android: farbe/holo_red_dark funktioniert nicht .... – Vincy

0

das ist, wie ich es erreicht. colorBankground soll die Farbe des Linienteilers ändern.

<style name="PopupMenu"> 
    <item name="android:itemBackground">@color/background_medium_gray</item> 
    <item name="android:background">@android:color/transparent</item> 
    <item name="android:textColor">@android:color/black</item> 
    <item name="android:colorBackground">@color/BackgroundGray</item> 
    <item name="android:dividerHeight">1dp</item> 
</style> 

    Context context = new ContextThemeWrapper(getActivity(), R.style.PopupMenu); 
    final PopupMenu popupMenu = new PopupMenu(context, view); 

    final MenuInflater menuInflater = popupMenu.getMenuInflater(); 
+0

Bitte nicht identische Antworten auf mehrere Fragen posten. Schreibe eine gute Antwort, dann vote/flag, um die anderen Fragen als Duplikate zu schließen. Wenn die Frage kein Duplikat ist, * schneide deine Antworten auf die Frage. * –

Verwandte Themen