'Android. styling of ListPopupMenu
I have inherited ListPopupMenu I used for show popup for items in ListView widget.
I use this code for creation and displaying my popup:
CADropDownPopupList popupMenu = new CADropDownPopupList(getActivity());
popupMenu.setAnchorView(view);
...
popupMenu.show();
I have styled listPopupMenu attribute in styles using this code:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
...
<item name="android:dialogTheme">@style/NoTitleAlertDialogTheme</item>
<item name="listPopupWindowStyle">@style/PopupMenu</item>
<item name="android:listPopupWindowStyle">@style/PopupMenu</item>
...
</style>
<style name="PopupMenu" parent="Widget.AppCompat.ListPopupWindow">
<item name="android:layout_marginLeft">16dp</item>
<item name="android:layout_marginRight">16dp</item>
<item name="android:paddingLeft">16dp</item>
<item name="android:paddingRight">16dp</item>
<item name="android:textSize">40sp</item>
<item name="android:popupBackground">@drawable/popup_background</item>
</style>
But no one style item maps to my popup. What did I do wrong?
Solution 1:[1]
Change your theme
Use PipupMenu insted of ListPopupWindow
<style name="PopupMenu.Example" parent="@style/Widget.AppCompat.Light.PopupMenu">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_example</item>
</style>
Because ListPopupWindow style not available check issue : http://code.google.com/p/android/issues/detail?id=58023
Solution 2:[2]
I too struggled to get styles working, but found that you can manually set properties directly on the ListPopupWindow after creating it.
val popup = ListPopupWindow(context, null, R.attr.listPopupWindowStyle).apply {
setBackgroundDrawable(ContextCompat(context, R.drawable.bg_popup_menu))
// ... etc ...
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Tom |
