Android 使用XML自定义菜单

在Android里面有两种方式做菜单(Menu)。第一种写在 public boolean onCreateOptionsMenu(Menu menu) 直接写代码,第二种是把菜单放到一个XML文件里面来定义的
使用第一种方式不好的地方就是使Activity文件过大,因而我们采用第二种方式:

还是老规矩,先看效果图:
1.gif 





2.gif 


效果图如上,让我们来看看用代码是怎么来实现的。


第一步:
先在res目录下创建一个menu目录,这个用来专门存放菜单文件。

第二步:
新建一个xml文件,如下:
sys_menu.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu
  3. xmlns:android="http://schemas.android.com/apk/res/android">

  4. <item android:title="设置" android:id="@+id/menu_set" android:icon="@drawable/icon"/><!-- android:icon="@drawable/icon" 可以使用漂亮的图片 -->
  5. <item android:title="账户管理" android:id="@+id/menu_account" android:icon="@drawable/icon"/>
  6. <item android:title="更多" android:id="@+id/menu_more" android:icon="@drawable/icon">
  7. <menu>
  8. <group>
  9. <item android:title="Copy" android:id="@+id/edit_copy"/>
  10. <item android:title="Paste" android:id="@+id/edit_paste"/>
  11. <item android:title="Cut" android:id="@+id/edit_cut"/>
  12. <item android:title="Delete" android:id="@+id/edit_delete"/>
  13. </group>
  14. </menu>
  15. </item>


  16. <item android:title="更多1" android:id="@+id/menu_more1" android:icon="@drawable/icon">
  17. <menu>
  18. <item android:title="Open..." android:id="@+id/file_open"/>
  19. <item android:title="Save" android:id="@+id/file_save"/>
  20. <item android:title="Save as" android:id="@+id/file_saveas"/>
  21. <item android:title="Exit" android:id="@+id/file_exit"/>
  22. </menu>
  23. </item>
  24. </menu>
复制代码

XML文件就定义完毕了,简单吧。
好了,那我们看看Activity怎么写,
MenuActivity.java
  1. package com.droidstouch.xmlmenu;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.view.MenuInflater;
  6. import android.view.MenuItem;
  7. import android.widget.Toast;

  8. /**

  9. * @author touchAndroid
  10. * URL:http://bbs.droidstouch.com
  11. */
  12. public class MenuActivity extends Activity {
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. }


  17. /**
  18. * 重写onCreateOptionsMenu 方法
  19. */
  20. public boolean onCreateOptionsMenu(Menu menu)
  21. {
  22. //获取MenuInflater对象
  23. MenuInflater inflater = getMenuInflater();
  24. // 使用自定义的XML菜单文件
  25. inflater.inflate(R.menu.sys_menu, menu);

  26. return super.onCreateOptionsMenu(menu);
  27. }


  28. /**
  29. * 判断所选择的菜单
  30. */
  31. public boolean onOptionsItemSelected(MenuItem item)
  32. {

  33. switch (item.getItemId())
  34. {
  35. case R.id.menu_set:
  36. Toast.makeText(this, "选择了设置菜单", Toast.LENGTH_LONG).show();
  37. break;
  38. case R.id.menu_account:
  39. Toast.makeText(this, "选择了账户管理菜单", Toast.LENGTH_LONG).show();
  40. break;
  41. default:
  42. break;
  43. }
  44. return super.onOptionsItemSelected(item);
  45. }
  46. }
复制代码

完成这几步就搞定了,大功告成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值