PopupWindow(2)简单示例-自定义弹出菜单
本示例,用 popupWindow 自定义弹出菜单
public class CustomActionProvider extends ActionProvider implements
OnMenuItemClickListener, OnClickListener, OnTouchListener, OnKeyListener { private final Context context;// 上下文
private View actionView;//action view private PopupWindow mPopupWindow;//popup window 里有个view,view显示的像个menu
private View mMenu; //popup window 里的显示控件 private void initPopupMenu(){ LayoutInflater lif = LayoutInflater.from(context); mMenu = lif.inflate(R.layout.custom_popup_window, null);
//不用setBackgroundDrawable的时候必须加这句才能back键和menu键退出
mMenu.setFocusableInTouchMode(true);
mMenu.setOnKeyListener(this);
mMenu.setOnTouchListener(this); mPopupWindow = new PopupWindow(mMenu,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT);
/*
* setBackgroundDrawable很重要,没有这个函数 back键和menu键关闭popwindow 很麻烦,
* 有了它以后,就不用为popwindow内的控件分别设置setOnKeyListener和setOnTouchListener了
* 可以同时支持back返回和点popwindow外面关闭popwindow,
*/
// mPopupWindow.setBackgroundDrawable(new ColorDrawable(-00000));
mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setAnimationStyle(R.anim.popwindow_anim);
mMenu.findViewById(R.id.btn1_popup_window).setOnClickListener(this);
mMenu.findViewById(R.id.btn2_popup_window).setOnClickListener(this);
mMenu.findViewById(R.id.btn3_popup_window).setOnClickListener(this);
mMenu.findViewById(R.id.btn4_popup_window).setOnClickListener(this);
mMenu.findViewById(R.id.btnClose_popup_window).setOnClickListener(this);
}
//...
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_action_view_for_costomProvider: {
mPopupWindow.showAsDropDown(v,-20,10);
}
return;
case R.id.btn4_popup_window:
case R.id.btn3_popup_window:
case R.id.btn2_popup_window:
case R.id.btn1_popup_window:
Toast.makeText(context, "popup window item clicked",
Toast.LENGTH_SHORT).show();
break;
case R.id.btnClose_popup_window:
break;
}
mPopupWindow.dismiss(); }
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_MENU:
if (mPopupWindow != null && mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
}
break;
}
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
mPopupWindow.dismiss();
return false;
}
}
PopupWindow(2)简单示例-自定义弹出菜单的更多相关文章
- 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
用PopupWindow实现弹出菜单是一个比较好的方式.当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐. 这个实例的效果是这样的:点击按钮后,一个菜 ...
- Android 使用PopupWindow实现弹出菜单
在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...
- Android开发技巧——使用PopupWindow实现弹出菜单
在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...
- 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 在android中有时候可能要实现一个底部弹 ...
- 读《深入理解Windows Phone 8.1 UI控件编程》1.4.3 框架的应用示例:自定义弹出窗口有感
前些天买了园子里林政老师的两本 WP8.1 的书籍.毕竟想要学得深入的话,还是得弄本书跟着前辈走的. 今天读到 1.4.3 节——框架的应用示例:自定义弹出窗口这一小节.总的来说,就是弄一个像 Mes ...
- DIV+CSS制作二级横向弹出菜单,略简单
没有使用JavaScript控制二级菜单的显示,结果如上图所示. 代码如下: <!DOCTYPE html> <html> <head> <meta char ...
- WPF自定义Popup和弹出菜单
Popup: <StackPanel Grid.Column="0" Grid.Row="6" Orientation="Horizontal& ...
- 向上弹出菜单jQuery插件
插件名:柯乐义英文名:Keleyijs文件名称:jquery.keleyi.js插件功能:该插件可以让你轻易地在页面上构建一个向上弹出的二级菜单. 示例查看:http://keleyi.com/kel ...
- win32进阶之路:程序托盘图标+右键弹出菜单
开场白 本次介绍两个非常棒且实用的技巧:程序托盘图标和右键弹出菜单,效果如下图. 程序托盘图标用了迅雷的图标,右键点击时候会弹出三个选项的菜单. 程序托盘图标设置 我会用尽可能清晰明了的步骤介绍方式 ...
随机推荐
- WPF代码注意事项,开发常见问题,知识总结
代码注意事项: 1.代码实现的样式赋值 XXX.Style = TryFindResource("StyleName") as Style; 2.WPF中FindName方法的使用 ...
- BZOJ 1042: [HAOI2008]硬币购物 容斥+背包
1042: [HAOI2008]硬币购物 Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请 ...
- DTD复习笔记(复习资料为菜鸟教程里的DTD教程)
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 为什么使用 DTD? 通过 DTD,您的每一个 XML 文件均可携带 ...
- dubbo简单配置与使用
dubbo简介 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时 ...
- 关闭mongodb 集群
[root@hadoop1 ~]# ps -aux | grep mongodb; root ? Sl : : /usr/local/mongodb/bin/mongod -f /usr/local/ ...
- 图像物体检測识别中的LBP特征
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xinzhangyanxiang/article/details/37317863 图像物体检測识别中 ...
- Hive中的一些点
hive严格模式 Hive中Order by和Sort by的区别是什么? hive中order by,sort by, distribute by, cluster by作用以及用法 Hadoop ...
- express 中文文档
express() 创建一个express应用程序 var express = require('express'); var app = express(); app.get('/', functi ...
- javascript 无刷新上传图片之原理
刚开始我认为可以像ajax 那样获取到数据然后通过ajax 发送请求,后来发现浏览器为了客户端的安全默认并没有给javascript 这个权限.这个方法当然是行不同了.我看了好像开源的上传图片原理,当 ...
- DBA之RMAN备份
13:00 backup database backup db :3h 3h: 产生了10 archive log file 16:00 finish restore database; 13 ...