在开发中,顶部菜单、底部菜单都是很常见菜单。除此之外还有上下文菜单和弹出菜单。这里主要实现选项菜单。
具体的实现,
具体的代码,
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/edit"
android:title="重命名"
app:showAsAction="never" />
<item
android:id="@+id/recolor"
android:icon="@drawable/recolor"
android:title="改变文本颜色"
app:showAsAction="ifRoom">
<menu>
<item
android:id="@+id/red"
android:title="红" />
<item
android:id="@+id/green"
android:title="绿" />
<item
android:id="@+id/blue"
android:title="蓝" />
</menu>
</item>
<item
android:id="@+id/app_bar_search"
android:icon="@drawable/ic_search_black_24dp"
android:title="Search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always" />
</menu>
这里主要是通过showAsAction属性改变选项的位置,比如app:showAsAction="never",可以设置为只显示在溢出菜单中,app:showAsAction="always",只会显示在顶部菜单栏中,app:showAsAction="ifRoom",根据菜单栏的空间判单,显示在哪里。除此之外,还可以通过app:showAsAction="ifRoom|withText",的方式设置,具体的效果可以更改。
对于菜单的显示位置,需要到themes中设置,防止遮挡菜单栏。
<style name="myOverflow" parent="Widget.AppCompat.PopupMenu.Overflow">
<item name="overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">10dp</item>
</style>
菜单的具体逻辑要到对应的activity或者fragment中设置,通过onCreateOptionsMenu,onOptionsItemSelected方法实现。
对于简单的菜单这样写就可以了,但是如果要改变菜单的样式的话,可以自定义来实现,使用popupmenu弹出菜单实现效果。