一、Menu
1.OptionsMenu(弹出菜单)
(1)显示弹出菜单布局必须要重写的方法 onCreateOptionsMenu 该方法必须返回true
//加载菜单文件
getMenuInflater().inflate(R.menu.main, menu);
//设置菜单添加图标有效
setIconEnable(menu, true);//enable为false时无效。
(2)要做弹出菜单的点击事件必须要重写的方法 onOptionsItemSelected
//获取到被点击的菜单的id
int itemId = item.getItemId();
//获取到被点击的菜单的内容
int itemId = item.getTitle();
(3)创建菜单项MenuItem
*创建菜单xml文件,必须以<menu>为根标签
<item>标签属性
orderInCategory 排序方式(数字越大,排在越后面。如果值相等,那么就按照先后顺序排列)
showAsAction 菜单在actionbar上面的显示方式
never:从不在actionbar上面显示
alway:一直显示在actionbar上面
ifRoom:如果actionbar上面有位置,那么就一直显示在actionbar上面
*menu.add()方法增加菜单
2.ContextMenu(上下文菜单)
长按某个控件(可以同时绑定多个控件)显示的菜单
//把上下文和一个控件进行绑定(可以绑定多个控件)
registerForContextMenu(listView);
(1)显示上下文菜单必须要重写的方法 onCreateContextMenu
//加载一个菜单布局文件
getMenuInflater().inflate(R.menu.main, menu); //菜单资源加载器对象
menu.setHeaderTitle("菜单标题"); //设置菜单标题
menu.setHeaderIcon(android.R.drawable.ic_menu_compass); //设置菜单标题图标
(2)点击上下文菜单的事件必须要重写的方法 onContextItemSelected
//获取到被点击的菜单项的详细信息(对于基本控件是没有的)
ContextMenuInfo menuInfo = item.getMenuInfo();
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
//获取到长按listView的item的位置信息
int position = info.position;
String string = (String) listView.getItemAtPosition(position);
int itemId = item.getItemId();
1、上下文菜单与OptionsMenu最大的不同在于:
Options Menu的拥有者是Activity,而上下文菜单的拥有者是Activity中的View;
每个Activity有且只有一个Options Menu,它为整个Activity服务。而一个Activity往往有多个View
哪个View需要上下文菜单就通过registerForContextMenu(View view)给这个View注册上下文菜单。
2、生成上下文菜单是通过Activity中的onCreateContextMenu()方法:
onCreateContextMenu方法很像生成OptionsMenu的onCreateOptionsMenu方法;
两者的不同在于:onCreateOptionsMenu只在用户第一次按“Menu”键时被调用,
而onCreateContextMenu会在用户每一次长按注册了上下文菜单的View时被调用。
3.PopupMenu(显示在控件周围)
//textView:菜单显示的位置是在textView的周围
menu = new PopupMenu(this, textView);
//给菜单添加菜单布局
getMenuInflater().inflate(R.menu.main, menu.getMenu());
//菜单的点击事件
menu.setOnMenuItemClickListener()
show(); 弹出菜单
dismiss(); 关闭菜单
4.解决菜单项不显示图标的问题
//enable为true时,菜单添加图标有效,enable为false时无效。
private void setIconEnable(Menu menu, boolean enable) {
try {
Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
m.setAccessible(true);
//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
m.invoke(menu, enable);
} catch (Exception e) {
e.printStackTrace();
}
}
二、Dialog
1.警告对话框(一般对话框)
AlertDialog.Builder builder = new Builder(this);
setTitle(""); 设置标题
setIcon(); 设置标题图标
setMessage("确定要删除吗"); 设置对话框内容
setPositiveButton("确定",listener); 点击确定按钮要做的事情
// 通过buirder对象创建对话框对象
AlertDialog alertDialog = builder.create();
alertDialog.setCanceledOnTouchOutside(false);
// 显示对话框
alertDialog.show();
alertDialog.dismiss();
2.自定义对话框
AlertDialog.Builder builder = new Builder(this);
// View customView = LayoutInflater.from(this).inflate(R.layout.dialog_layout, null);
View customView = getLayoutInflater().inflate(R.layout.dialog_layout, null);
//设置对话框要显示的布局
builder.setView(customView );
Button btnSure = (Button) customView.findViewById(R.id.btnSure);
btnSure.setOnClickListener(listener);
......
3.日期选择对话框
DatePickerDialog dialog = new DatePickerDialog
( this,
new OnDateSetListener() {重写onDateSet方法}, //选择日期之后调用的方法。
year, month, day); //日历显示的默认日期
dialog.show();
4.进度对话框
注意:ProgressDialog控件一定要初始化,但不是像其它控件一样用findViewById,而是
dialog = new ProgressDialog(this);
1、属性
setTitle 设置标题
setMessage 提示框的内容
setIcon 设置图标
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) 设置对话框为水平进度对话框
setCanceledOnTouchOutside(false) 设置点击对话框以外的地方,对话框不消失
2、监听事件
dialog.dismiss(); //让对话框消失
dialog.setProgress(values[0]);

- 20Mybatis_订单商品数据模型_一对一查询——resultType和resultMap两种方式以及两种方式的总结
上一篇文章分析了数据模型,这篇文章就给出一个需求,这个需求是一对一查询,并完成这个需求. ------------------------------------------------------- ...
- curl文件上传有两种方式,一种是post_fileds,一种是infile
curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...
- thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。
thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- 1.Git起步-Git的三种状态以及三种工作区域、CVCS与DVCS的区别、Git基本工作流程
1.Git基础 版本控制系统是一种用于记录一个或多个文件内容变化,以便将来查阅恢复特定版本修订情况的系统. Git是一种分布式版本控制系统(Distributed Version Control Sy ...
- 解决Geoserver请求跨域的几种思路,第二种思路用过
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...
- Java随机获取32位密码且必须包含大小写字母、数字和特殊字符,四种的任意三种
Java随机获取32位密码且必须包含大小写字母.数字和特殊字符,四种的任意三种 Java随机获取32位密码且必须包含大小写字母.数字和特殊字符,四种的任意三种,代码如下: import java.ut ...
- 将一种cell当做几种cell使用
将一种cell当做几种cell使用 将一种cell当做几种cell用是有着一些意义的,比如,有时候,不同的cell之间差异很小,如果再派生一个cell出来,就会显得很麻烦,这时候,将这个cell当做几 ...
- 在一个web 应用中,改变url无非是2种方式,一种是利用超链接进行跳转,另一种是使用浏览器的前进和回退功能
在一个web 应用中,改变url无非是2种方式,一种是利用超链接进行跳转,另一种是使用浏览器的前进和回退功能 https://www.jianshu.com/p/27ee7df4ccc1
随机推荐
- C#程序重启自己
Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); Application.Exit();
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
- JavaWeb项目开发案例精粹-第4章博客网站系统-003Dao层
1. package com.sanqing.dao; import java.util.List; import com.sanqing.fenye.Page; import com.sanqing ...
- jboss内存管理
jboss内存查看 1. 用浏览器打开网址:http://IP:port/jmx-console/ 2. 找到 jboss.system 一节,或者在 filter 文本框中输入 jboss.syst ...
- SSIS ->> Logging
SSIS提供了Event Handler之外的另一种方法捕捉Event和获取需要的信息,这种方法是Logging.SSIS的Logging针对不同的组件可以提供比Event Handler更多的Eve ...
- POJ 1903 & ZOJ 2469 & UVA 1326 Jurassic Remains (部分枚举)
题意:给定n个只有大写字母组成的字符串,选取尽可能多的字符串,使得这些字符串中每个字母的个数都是偶数.n<=24 思路:直接枚举每个字符串的选或不选,复杂度是O(2^n).其实还有更简便的方法. ...
- MongoDB 学习笔记(一)基础篇
1.MongoDB 特点 面向集合存储,存储对象类型的数据方便 模式自由,不需要定义任何模式(schma) 动态查询 完全索引,包含内部对象 复制和故障恢复方便 高效的二进制数据存储 支持c# 平台驱 ...
- oracle教程:PLSQL常用方法汇总
oracle教程:PLSQL常用方法汇总 在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set ...
- oracle数据导入的常用命令
oracle 中数据库完全导入导出:cmd命令行模式 oracle数据库cmdfile数据库服务器constraints Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.ex ...
- android 内存溢出问题分析
最近的项目中,内存一直再增长,但是不知道是什么问题,导致内存溢出,在网上看到了这么一篇关于内存分析与管理的文章,解决了部分问题,感觉这篇文 章还不错,就转帖到我的blog上了,希望对大家有所帮助. ...