我有以下非常简单的工具栏点菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/empty"
android:icon="@drawable/ic_more_vert_white_24px"
android:orderInCategory="101"
android:title="@string/options"
app:showAsAction="always">
<menu>
<item
android:id="@+id/action_edit"
android:icon="@android:drawable/ic_menu_edit"
android:title="@string/edit"
app:showAsAction="ifRoom" />
</menu>
</item>
</menu>
看起来像这样:
当我单击点按钮时,会显示子菜单,但是它与点重叠:
如何使其显示在点下?我也许可以通过弹出菜单来做到这一点,但感觉应该有一种更简单的方法。
答案 0 :(得分:0)
我认为您的问题是,在项目的属性“ showAsAction ”的第一个定义中,该属性的ID为空。您还需要像在子菜单中一样,将值设置为“ ifAsRoom ”。
您将第一个项目(空)定义为始终,这可以使操作项与操作栏中的其他元素UI重叠。请检查此link。
答案 1 :(得分:0)
在Toolbar
中添加样式,如下所示。
<android.support.v7.widget.Toolbar
android:id="@+id/menu_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.MyTheme" />
现在像下面这样在MyTheme
文件中声明styles.xml
。
<style name="ThemeOverlay.MyTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColor">@android:color/darker_gray</item>
<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
</style>
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
<item name="android:overlapAnchor">false</item>
<item name="android:popupBackground">@android:color/white</item>
</style>
关键思想是设置具有以下属性的actionOverflowMenuStyle
。
<item name="android:overlapAnchor">false</item>