第二章实例:Android窗口菜单显示



package test.main.cls; import com.example.popupwindow.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.PopupWindow;
import android.widget.Toast; public class PopupWindows extends Activity { @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderIcon(R.drawable.ic_launcher);
SubMenu submenu = menu.addSubMenu("系统修复");//该方法返回submenu接口对象,想必menu实现了submenu接口
submenu.add(0, 0, 0, "自动修复").setIcon(R.drawable.ic_launcher);
submenu.add(0, 1, 0, "修复外存").setIcon(R.drawable.ic_launcher);
submenu.add(0, 2, 0, "修复硬件").setIcon(R.drawable.ic_launcher);
//------------------------------------------
menu.setHeaderIcon(R.drawable.ic_launcher);
SubMenu submenus = menu.addSubMenu("全局修复");//该方法返回submenu接口对象,想必menu实现了submenu接口
submenus.add(0, 0, 0, "完全修复").setIcon(R.drawable.ic_launcher);
submenus.add(0, 1, 0, "无损修复").setIcon(R.drawable.ic_launcher);
submenus.add(0, 2, 0, "完美修复").setIcon(R.drawable.ic_launcher);
super.onCreateContextMenu(menu, v, menuInfo);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu submenu = menu.addSubMenu("毁灭系统");//该方法返回submenu接口对象,想必menu实现了submenu接口
submenu.add(0, 0, 0, "全盘毁灭").setIcon(R.drawable.ic_launcher);
submenu.add(0, 1, 0, "毁灭外存").setIcon(R.drawable.ic_launcher);
submenu.add(0, 2, 0, "毁灭硬件").setIcon(R.drawable.ic_launcher);
//submenu.add(0, 4, 0, "毁灭电池").setIcon(R.drawable.ic_launcher).setIntent(/*Intent*/);
//submenu.add(0, 3, 0, "毁灭屏幕").setShortcut('F', '5');
//submenu.setGroupCheckable(0, true, true);按钮组是否可勾选
//-----------------------------------------
SubMenu submenu1 = menu.addSubMenu("发送诈骗信息");
submenu1.add(0, 0, 0, "发送给全部好友");
submenu1.add(0, 1, 0, "发送给最近联系");
submenu1.add(0, 2, 0, "随机发送");
submenu1.add(0, 3, 0, "发送国外"); return super.onCreateOptionsMenu(menu);
} @Override
public void onOptionsMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onOptionsMenuClosed(menu);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View contentv = this.getLayoutInflater().inflate(R.layout.main_layout, null);
this.setContentView(contentv);
//-------------------------------------------
Button btn = (Button)findViewById(R.id.clickssss);
final PopupMenu pMenu = new PopupMenu(PopupWindows.this,btn);
this.getMenuInflater().inflate(R.menu.popup_menu, pMenu.getMenu());
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
pMenu.show();
}
});
pMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(PopupWindows.this, item.getTitle(), Toast.LENGTH_LONG).show();
return true;
}
});
///------------------------------------------
//注意::findViewById需要setContentView后可用
this.registerForContextMenu(contentv);//给一个View绑定上下文菜单 }
}
xml:
//main_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/clickssss"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="弹出"/> </LinearLayout>
xml:
//menu/popup_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<group android:checkableBehavior="none">
<item android:id="@+id/menu_1"
android:title="这是一个弹出菜单"/>
<item android:id="@+id/menu_2"
android:title="其用法也非常简单"/>
<item android:id="@+id/menu_3"
android:title="控件使用不是重点"/>
<item android:id="@+id/menu_4"
android:title="重点是要理解代码"/> </group> </menu>
第二章实例:Android窗口菜单显示的更多相关文章
- [Learn Android Studio 汉化教程]第二章:Android Studio概述(一)
[Learn Android Studio ]第二章:Android Studio概述(一) Android Studio是一个视窗化的开发环境.为了充分利用有限的屏幕空间,不让你束手束脚,Andro ...
- Android群英传笔记——第二章:Android开发工具新接触
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
- Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得
第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...
- 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数
猜数字游戏--核心代码--猜测次数 #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...
- 第二章实例:ActionBar结合Fragment显示
package tab.test; import com.example.actionbar_tab.R; import android.app.ActionBar; import android.a ...
- 第二章:Android Studio概述(一)[学习Android Studio汉化教程]
Android Studio是一个视窗化的开发环境.为了充分利用有限的屏幕空间,不让你束手束脚,Android Studio 在特定的时间仅仅显示一小部分可用窗口. 除了一些上下文敏感的窗口和上下文 ...
- 第二章:Android Studio概述(二)[学习Android Studio汉化教程]
The Main Menu Bar 主菜单栏 主菜单栏位于Android Studio的最上面,你几乎可以利用主菜单和其子菜单来执行任何操作.不像Android Studio中其他的一些菜单,主菜单 ...
- 我的Android第二章:Android目录结构
嗨!各位,小编又和大家分享知识啦,在昨天的博客笔记中小编给大家讲解了如何去配置Android工具以及SDK中的一些配置,那在今天的学习小编会带给大家哪些Android知识呢?首先我们看一下今天的学习目 ...
- 第二章 搭建Android开发环境
这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...
随机推荐
- 细讲encodeURI和encodeURIComponent以及escape的区别与应用
首先,我们都知道这三个东西都是用来编码的 先来说encodeURI()和encodeURIComponent() 这两个是在转换url时候用来编码解码用的. 有编码就会有解码, 解码就是decodeU ...
- C# 十进制和十六进制转换
转至:http://www.cnblogs.com/fwind/archive/2012/04/13/2445380.html 在C#中,十进制和十六进制转换非常简单,方法如下: 十进制转为十六进制: ...
- 亲试,Windows平台上使用Qt5.2.1编写Android
首先把工具都下载好: 1. Qt for Android: http://qt-project.org/downloads 2. Android NDK http://developer.androi ...
- Reading source code
software is a system built up of many parts rebuild that decomposition see the patterns in codes is ...
- stretchlim函数分析
在看imadjust代码时,看到stretchlim函数,特此分析一下,代码注释如下 function lowhigh = stretchlim(varargin) %STRETCHLIM Find ...
- oracle中anyData数据类型的使用实例
---创建waterfallcreate or replace type waterfall is object(name varchar2(30),height number); --创建river ...
- ruby更换为淘宝的源
我们在使用gem更新的时候,经常会为速度抓狂,其实gem默认的源是https://rubygems.org,比较慢众所周至的原因了. 可以将源更换到国内的taobao源 查看当前有的源 gem sou ...
- 关于python的面向对象编程
先写上代码,有代码才好理解: #filename:classdemo.py class test: '''just person''' a=1 b=2 c=0 def __init__(self): ...
- 2016_ThinkinG of everyDay
2016-2-15:新年的第一篇心情,慢慢更新. 1.以后的文章当然都会是ACM竞赛的题解,但会多写写自己的思考以及总结,因为感觉自己缺少思考这个习惯,有些东西在脑子里也只是一带而过,最后也不会停留多 ...
- windows平台使用Microsoft Visual C++ Compiler for Python 2.7编译python扩展
在windows平台上安装python c extension的扩展包是件很痛苦的事情,一般通过安装vc/vs系列来编译C扩展,不过安装包都比较大.或者通过mingw编译,不过有时会在兼容性上出现点问 ...