当前位置: 首页 > news >正文

一个在ActionBar上显示图标和菜单PopupMenu的小示例(19)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 注意要改版本
		ActionBar actionBar = getActionBar();
		// 设置是否将图标转换为可点击的按钮,并加一个箭头图标,系统默认的图标
		// actionBar.setDisplayHomeAsUpEnabled(true);//这一句就可以实现图片和点击
		actionBar.setHomeButtonEnabled(true);// 转为可点击
		// 不用系统默认的,自己给图标,要API 14版本
		actionBar.setIcon(R.drawable.ie_arrow_normal);
		actionBar.setTitle("返回");
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		MenuItem item = menu.findItem(R.id.action_more);
		ImageView imageView = (ImageView) item.getActionView();
		imageView.setImageResource(R.drawable.skin_aio_more_nor);
		// 点击这个图片按钮的时候给一个监听事件
		imageView.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 点击中弹出一个PopupMenu
				PopupMenu popupMenu = new PopupMenu(MainActivity.this, v);// v里面的每一项视图
				popupMenu.getMenu().add(Menu.NONE, 1, Menu.NONE, "添加");
				popupMenu.getMenu().add(Menu.NONE, 2, Menu.NONE, "收藏");
				popupMenu.getMenu().add(Menu.NONE, 3, Menu.NONE, "返回");

				popupMenu
						.setOnMenuItemClickListener(new OnMenuItemClickListener() {

							@Override
							public boolean onMenuItemClick(MenuItem item) {
								switch (item.getItemId()) {
								case 1:
									Toast.makeText(MainActivity.this, "添加", 100)
											.show();
									break;

								case 2:
									Toast.makeText(MainActivity.this, "分享", 100)
											.show();
									break;
								case 3:
									Toast.makeText(MainActivity.this, "返回", 100)
											.show();
									break;
								}
								return false;
							}
						});
				popupMenu.show();
			}
		});
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.action_add:
			Toast.makeText(MainActivity.this, "添加", Toast.LENGTH_SHORT).show();
			break;

		case R.id.action_camera:
			Toast.makeText(MainActivity.this, "照相", Toast.LENGTH_SHORT).show();
			break;
		case R.id.action_call:
			Toast.makeText(MainActivity.this, "打电话", Toast.LENGTH_SHORT).show();
			break;
		case android.R.id.home:// ActionBar的返回图标
			Intent intent = new Intent(this, MainActivity.class);
			intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);// 将上面的页面清除掉,跟SingleTaskTop差不多的效果
			startActivity(intent);
			break;
		}
		return super.onOptionsItemSelected(item);
	}
}

文件夹下的menu/菜单选项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_add"
        android:icon="@android:drawable/ic_menu_add"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:title=""/>
    <item
        android:id="@+id/action_camera"
        android:icon="@android:drawable/ic_menu_camera"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:title=""/>
    <item
        android:id="@+id/action_call"
        android:icon="@android:drawable/ic_menu_call"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:title=""/>
    <item
        android:id="@+id/action_more"
        android:actionViewClass="android.widget.ImageView"
        android:orderInCategory="1"
        android:showAsAction="always"
        android:title=""/>

</menu>



// // 设置导航模式,在另一Activity实现
// actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);// 下拉列表模式
// List<Map<String, String>> pullList = new ArrayList<Map<String,
// String>>();
// Map<String, String> option1 = new HashMap<String, String>();
// option1.put("option", "首页");
// Map<String, String> option2 = new HashMap<String, String>();
// option2.put("option", "下页");
// Map<String, String> option3 = new HashMap<String, String>();
// option3.put("option", "上页");
// pullList.add(option1);
// pullList.add(option2);
// pullList.add(option3);
// SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,
// pullList, android.R.layout.simple_list_item_1,
// new String[] { "option" }, new int[] { android.R.id.text1 });
// actionBar.setListNavigationCallbacks(adapter,
// new OnNavigationListener() {
//
// @Override
// public boolean onNavigationItemSelected(int itemPosition,
// long itemId) {
// Toast.makeText(MainActivity.this,
// "你点中了第" + itemPosition+1 + "项",
// Toast.LENGTH_SHORT).show();
// return false;
// }
// });


转载于:https://my.oschina.net/u/2541146/blog/625276

相关文章:

  • 管理大数据:监测系统创造新的收益
  • 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求
  • select 遇到的坑
  • iOS开发文件夹--Copy items if needed
  • SEO页面标题Title的优化
  • 优化函数式编程:向 PHP 移植 Clojure 函数
  • mxnet 源码阅读 7
  • ViewController之间的转场和数据传递
  • 基本数据结构:链表
  • LinuxMint17.3配置全局变量
  • Android零基础入门第33节:Android事件处理概述
  • app开发版面设计原则
  • matplotlib 雷达图2
  • 省赛选拔赛解题报告
  • ID、句柄、指针、对象互相转换
  • #Java异常处理
  • 07.Android之多媒体问题
  • Django 博客开发教程 8 - 博客文章详情页
  • Docker 笔记(2):Dockerfile
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java面向对象及其三大特征
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 编写高质量JavaScript代码之并发
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 不上全站https的网站你们就等着被恶心死吧
  • 给新手的新浪微博 SDK 集成教程【一】
  • 猴子数据域名防封接口降低小说被封的风险
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 蓝海存储开关机注意事项总结
  • 免费小说阅读小程序
  • 配置 PM2 实现代码自动发布
  • 前端设计模式
  • 说说动画卡顿的解决方案
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #if #elif #endif
  • $forceUpdate()函数
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (ZT)一个美国文科博士的YardLife
  • (二)斐波那契Fabonacci函数
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (离散数学)逻辑连接词
  • (四)鸿鹄云架构一服务注册中心
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)scrum常见工具列表
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Micro Framework初体验(二)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20171102]视图v$session中process字段含义
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色