首页 > 解决方案 > 从xamarin表单android中的操作栏中的单击事件添加下拉菜单

问题描述

我在内容页面中添加了一个工具栏项:

<ContentPage.ToolbarItems>
    <ToolbarItem IconImageSource="icon_dropdown.png"/>
</ContentPage.ToolbarItems>

我想要的是当用户单击工具栏项时,会弹出一个这样的菜单。以向下滑动显示内容/菜单项的方式制作动画。

我一直在网上搜索,但搜索的关键字总是将我带到微调器,并且是 C# 和 Xamarin 表单的新手,我不确定微调器是否仍然是我想要实现的目标,因为微调器看起来更像是一个对话框盒子。

我正在尝试做的事情的示例图像,我已经进行了 photoshop

非常感谢任何帮助。谢谢。

标签: androidxamarinxamarin.formsandroid-actionbar

解决方案


我做了一些调查,找到了一种通过主题更改溢出弹出菜单位置的方法(代码附在最后以防需要),但无法更改宽度以匹配整个屏幕,不确定Android是否做了一些菜单的限制。

如果您需要一个与您的图片完全相同的下拉列表,spinner 可能也不是一个完美的选择,您最好创建一个覆盖原始活动的新活动并自定义新的活动布局,但不建议考虑性能。此外,您可以在较早的帖子中找到一些内容,看看它是否能给您任何想法。

添加新样式:

  <style name="OverflowMenuStyle"  parent="@style/ThemeOverlay.AppCompat.Light">
    <item name="overlapAnchor">false</item><!--not overlay the toolbar-->
    <!--<item name="android:dropDownWidth">10dp</item>    not work-->
    <!--<item name="android:maxWidth">400dp</item> not work-->
    <item name="android:paddingRight">0dp</item>
    <!--dropDownVerticalOffset is the property you want to avoid overlay the toolbar-->
    <item name="android:dropDownVerticalOffset">4dp</item>
    <item name="android:dropDownHorizontalOffset">0dp</item>
    <item name="android:popupBackground">#BFBFBF</item>
  </style>

Android 资源布局文件夹的 Toolbar.xml,将 popupTheme 更改为:

android:popupTheme="@style/OverflowMenuStyle"

在 MainTheme.Base 样式中添加一个项目:

<item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>

推荐阅读