一个在ActionBar上显示图标和菜单PopupMenu的小示例(19)
2016-02-27 00:00
701 查看
摘要: 在ActionBar上显示图标,和配合菜单PopupMenu使用看看显示的的布局效果
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; // } // });
相关文章推荐
- 深圳运维、PM交流群 492384244
- 第51课:HadoopMapReduce多维排序解析与实战
- muShtaPmumixaMeerTyraniB.124
- 如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- Head First PMP – 7 – 成本管理(Cost Management)
- 产品经理面试常见问题
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 【Some】【搞逗】如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 如何向外行解释产品经理频繁更改需求为何令程序员烦恼?
- npm 初识
- 如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- 党委会的工作方法[推荐程序员、产品经理仔细看看]
- 如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
- am,pm命令