在使用 Android
版微信时发现,微信移除了侧滑操作,改为弹窗实现。个人对该方式很喜欢,所以对 Menu
的内容进行了整理。
选项菜单 OptionMenu
1 | <?xml version="1.0" encoding="utf-8"?> |
android:showAsAction
ifRoom
: Only place this item in the app bar if there is room for itnever
: overflow menuwithText
: only textandroid:title
always
: on the barcollapseActionView
:android:actionLayout
orandroid:actionViewClass
android:actionViewClass
1 | <item android:id="@+id/action_search" |
通过 setOnActionExpandListener()
监听展开收缩事件
android:actionViewLayout
引入布局用于操作窗口,效果类似于android:actionViewClass
android:actionProviderClass
1 | <item android:id="@+id/action_share" |
显示布局及可以监听相关事件
1 |
|
1 | // Call to update the share intent |
这种会记录偏好,可通过setShareHistoryFileName()
设置记录的xml文件名
设置setOnShareTargetSelectedListener
监听条目点击事件
可继承
support
包下ActionProvider
自定义实现android.support.design.R.dimen.abc_action_bar_default_height_material
关于overflow menu在高版本不显示icon
安卓4.0之前会显示icon,高版本中不会显示,可以通过反射去设置icon的显示
1 | private void setIconEnable(Menu menu, boolean enable) { |
1 | /** |
手机实体菜单按键导致actionbar上的三个点图标不显示
1 | /** |
可以通过自定义toolbar中布局实现理想效果
1 | ActionBar actionBar = getSupportActionBar(); |
上下文菜单 ContextMenu
浮动上下文菜单
registerForContextMenu(View view)
注册于上下文菜单关联的View- Activity 或 Fragment实现
registerForContextMenu()
,当关联的View收到长按事件之后,会响应该方法。
1 |
|
- 事件监听
1 |
|
为单个视图启用上下文操作模式
- 实现 ActionMode.Callback 接口。在其回调方法中,您既可以为上下文操作栏指定操作,又可以响应操作项目的点击事件,还可以处理操作模式的其他生命周期事件
- 当需要显示操作栏时,调用
activity
的startActionMode()
方法
弹出菜单 PopupMenu
1 | public void showPopup(View v) { |
通过setOnMenuItemclickListener()
设置监听
基于 Intent 的菜单项
通过intent_filter定义删选规则 CATEGORY_ALTERNATIVE
和 CATEGORY_SELECTED_ALTERNATIVE
调用Menu.addIntentOptions()
来添加应用列表
ListPopupMenu
1 | final ListPopupWindow popup = new ListPopupWindow(mContext); |
PopupWindow
1 | final PopupWindow popupWindow = new PopupWindow(mContext); |