一.
1.系统菜单 新建菜单onCreateOptionsMenu 监听事件onOptionsItemSelected
(1)编写布局
在res下面创建一个menu文件夹, 并新建一个xml文件作为OptionMenu的布局文件
(2)重写创建方法
Activity重写onCreateOptionsMenu加载资源文件
(3)添加事件监听
Activity重写onOptionsltemSelected加设置事件监听
2.上下文菜单 新建菜单AlertDialog.Builder() 监听事件setSingleChoiceItems()
(1)在res'下面创建一个menu文件夹,并新建一个xml文件作为ContextMenu的布局文件,我们复用上面的menu布局
(2)Activity重写onCreateConextMenu加载资源文件
(3).Activity重写onConextltemSelected设置事件监听
(4)为控件添加长按属性并将菜单绑定到这个控件上:registerForContextMenu(控件)
一个Activity只有一个系统菜单!!!!
二.PopupMenu
1.在res下面创建一个menu文件夹,并新建 一个xml文件作为PoupMenu的布局文件。
2.把PopupMenu相关逻辑封装到 showPopupMenu()方法中,包含 PopupMenu的实例化、布局设置、显示、 添加MenuItem的点击监听及响应等
3.为控件设置事件监听直接调用 showPopupMenu()方法
弹出菜单,默认弹出的位置在控件view的下方
三.PopupWindow弹窗
1.PopupWindow可以实现和dialog相似的弹出框效果,但是PopupWindow的特点是定位更准确、更灵活,宽高和边界都比较清晰。
PopupWindow
1:可以指定显示位置 2:可用于显示任意视图 3:出现在当前页面
定义:PopupWindow在当前页面显示任意视图并可以指定显示位置的弹出窗口。
常用方法
setWidth()/setHeight() 设置PopupWindow的宽高
showAtLocation() 显示在指定位置 必要方法
setContentView() 显示的视图
setBackgroundDrawable() 设置PopupWindow的背景
setOutsideTouchable() 设置PopupWindow外部可点击
showAsDropDown() 设置PopupWindow显示在某个控件的下方
Gravity.BOTTOM:显示在页面底部
PopupWindow弹出时,添加半透明背景
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=0.5f;//设置透明度 范围:0-1,由完全不透明到透明
getWindow().setAttributes(lp);
关闭时的监听事件变回来
mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
public void onDismiss() {
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=1.0f;
}
});
重写onKeyDown方法,关闭PopupWindow.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
mPopupWindow.dismiss();
return true;
}
}