造型Android PopupMenu分隔线

时间:2016-11-19 15:18:20

标签: android android-layout customization divider android-popupwindow

我在我的应用中使用了几个PopupMenu,它们都按预期工作

Menu image

但是我希望将白色线条分开,但我无法找到我想要设置的位置。我希望我可以访问基础ListView,但似乎不可能。我看不到与分隔线相关的样式项。

这可能吗,我应该在哪里/如何设置?

2 个答案:

答案 0 :(得分:6)

我已经能够使用以下技术更新PopupMenu上的分隔符颜色(基于此答案的线索https://stackoverflow.com/a/40017199/285190

创建一个样式如下......

<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>

然后在创建菜单时创建一个上下文包装器

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

这确实显示了一条分界线,但菜单的高度似乎没有正确计算以包含新的分隔线并显示垂直滚动条。

如果有人知道原因,请添加评论

答案 1 :(得分:-1)

这就是我实现它的方式。 colorBankground用于更改行分隔符的颜色。

    <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();