eth*_*hio 8 java android android-actionbar

默认情况下它不应该在操作栏下面吗?那么我做错了什么?
@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;
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
Nik*_*ski 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>
Run Code Online (Sandbox Code Playgroud)
小智 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>
Run Code Online (Sandbox Code Playgroud)
资料来源:https://stackoverflow.com/a/27134045/3586815
感谢Nikola Despotoski的暗示.
根据Material Design规范,溢出菜单应显示在操作栏的顶部:
菜单是一张临时的纸张,总是与应用栏重叠,而不是作为应用栏的扩展.

这是Android Lollipop应用程序以及使用AppCompat v7支持库的任何应用程序的默认行为.
| 归档时间: |
|
| 查看次数: |
6831 次 |
| 最近记录: |