【问题标题】:Styling Android PopupMenu Divider Lines样式化 Android PopupMenu 分隔线
【发布时间】:2017-04-03 07:58:06
【问题描述】:

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

但我想用白线分隔各个项目,但我找不到要设置的位置。我希望我可以到达底层的 ListView 但这似乎是不可能的。我也看不到与分隔线相关的样式项目。

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

【问题讨论】:

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


【解决方案1】:

我已经能够使用以下技术更新 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);

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

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

【讨论】:

  • 嘿@Flexicoder 你可以尝试添加divider 和dividerHeight 如下:&lt;style name="popupMenuStyle" &gt; &lt;item name="android:textColor"&gt;#ffffff&lt;/item&gt; &lt;item name="android:itemBackground"&gt;#000000&lt;/item&gt; &lt;item name="android:dropDownListViewStyle"&gt;@style/DropDown.Theme&lt;/item&gt; &lt;/style&gt; &lt;style name="DropDown.Theme" parent="ThemeOverlay.AppCompat"&gt; &lt;item name="android:divider"&gt;@color/your_color&lt;/item&gt; &lt;item name="android:dividerHeight"&gt;1dp&lt;/item&gt; &lt;/style&gt; 我可以这样摆脱垂直滚动条。
  • 为什么它在 Android 6.0 上不适合我。唯一对我有用的是设置 textColor 和背景,但没有显示分隔线...
  • 根据我们的 UX,我必须使用白色作为背景,不幸的是,分隔线也使用白色背景。当我将菜单背景更改为任何其他颜色时,我看到了分隔线,但当它是白色时却没有……那么,如何更改分隔线颜色? @android:color/holo_red_dark 不起作用....
  • @Vincy - 听起来你需要问一个新问题
  • @pablogeorge 的回答为我解决了这个问题。非常感谢两位!
【解决方案2】:

这就是我实现它的方式。 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();

【讨论】:

  • 我想知道你是否知道如何设置分隔线宽度,比如菜单总宽度的 80%;
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
相关资源
最近更新 更多