默认情况下不应该在操作栏下面吗?那么我做错了什么?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
RES /菜单/ main.xml中
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.test.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
答案 0 :(得分:13)
这是您正在使用的AppCompat主题的默认行为。根据材料设计指南,预计溢出菜单会出现在它的锚点ActionBar之上。
如果通过设置主题overlapAnchor
至false
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow" >
<item name="overlapAnchor">false</item>
<item name="dropDownVerticalOffset">?attr/actionBarSize</item>
</style>
答案 1 :(得分:12)
最后这对我有用:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" />
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
</style>
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
<!-- Required for pre-Lollipop. -->
<item name="overlapAnchor">false</item>
<!-- Required for Lollipop. -->
<item name="android:overlapAnchor">false</item>
</style>
</resources>
来源:https://stackoverflow.com/a/27134045/3586815
感谢Nikola Despotoski的暗示。
答案 2 :(得分:7)
根据Material Design specifications,溢出菜单应显示在操作栏的顶部:
菜单是一张临时的纸张,总是与应用栏重叠,而不是表现为应用栏的扩展名。
这是Android Lollipop应用程序以及使用AppCompat v7支持库的任何应用程序的默认行为。
答案 3 :(得分:1)
这是Material Design的新默认值。弹出菜单将显示来自打开它们的Button
。
这样做是为了增加Button
和弹出菜单之间的可视连接。只需看看已经使用Material Design的Googles应用程序,弹出菜单就会以同样的方式运行。