Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。
当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。
这里就先学习 选项菜单OptionsMenus
创建选项菜单有两种方式
一、xml文件静态创建
7 package information; 8 9 import com.example.allcode.R; 10 11 import android.app.Activity; 12 import android.content.Intent; 13 import android.os.Bundle; 14 import android.view.Menu; 15 import android.view.MenuItem; 16 import android.widget.Toast; 17 18 public class OptionMenus_text extends Activity{ 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 // TODO Auto-generated method stub 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.optionmenus); 24 25 } 26 27 28 @Override 29 public boolean onCreateOptionsMenu(Menu menu) { 30 // TODO Auto-generated method stub 31 //一、xml的形式静态添加菜单项 32 getMenuInflater().inflate(R.menu.main,menu); 33 34 return true; 35 36 } 37 38 //点击事件 39 40 @Override 41 public boolean onOptionsItemSelected(MenuItem item) { 42 // TODO Auto-generated method stub 43 //根据菜单项id执行响应事件 44 switch (item.getItemId()) { 45 //静态菜单 判断Id 46 case R.id.action_menu_1: 47 Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show(); 48 break; 49 case R.id.action_menu_2: 50 Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show(); 51 52 53 54 default: 55 break; 56 } 57 58 return super.onOptionsItemSelected(item); 59 60 } 61 }
32 getMenuInflater().inflate(R.menu.main,menu);看这一行代码,我们找到其对应的文件
main.xml文件代码如下:
1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id="@+id/action_menu_1" 5 android:orderInCategory="100" 6 android:showAsAction="never" 7 android:title="菜单一"/> 8 <item 9 android:id="@+id/action_menu_2" 10 android:orderInCategory="100" 11 android:showAsAction="never" 12 android:title="菜单二"/> 13 14 </menu>
可以看到两个菜单项,看下菜单项的各个属性:
1、 android:id= 是菜单项id
2、android:orderInCategory=是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中
3、android:showAsAction=
原来是特定版本用到的,当你的应用程序目标设为蜂巢平台(即 Android 3.0)时,你可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角, 对用户来说使用更方便,控制该行为的主菜单项属性是android:showAsAction。 这个属性可接受的值有:
1.alaways:这个值会使菜单项一直显示在ActionBar上。
2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。
3.never:这个值菜单永远不会出现在ActionBar是。
4.withText:这个值使菜单和它的图标,菜单文本一起显示。
4、android:title=是菜单项名字 二、动态创建选项菜单
1 package information; 2 3 import com.example.allcode.R; 4 5 import android.app.Activity; 6 import android.content.Intent; 7 import android.os.Bundle; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.widget.Toast; 11 12 public class OptionMenus_text extends Activity{ 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 // TODO Auto-generated method stub 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.optionmenus); 18 19 } 20 21 22 @Override 23 public boolean onCreateOptionsMenu(Menu menu) { 24 // TODO Auto-generated method stub 25 26 //二、动态添加菜单项 27 MenuItem item = menu.add(1, 100, 1, "菜单一"); 28 //第一个参数:用来分组的id,第二个参数:菜单项的id,第三个参数:排序,第四个参数:菜单项文字描述 29 item.setTitle("标题"); 30 item.setIcon(R.drawable.icon_72);//api>=11不显示图片 31 menu.add(1, 101, 1, "菜单二"); 32 menu.add(1, 102, 1, "菜单三"); 33 menu.add(1, 103, 1, "菜单四"); 34 return true; 35 36 } 37 38 //点击事件 39 40 @Override 41 public boolean onOptionsItemSelected(MenuItem item) { 42 // TODO Auto-generated method stub 43 //根据菜单项id执行响应事件 44 switch (item.getItemId()) { 45 46 47 //动态菜单判断Id,id为第二个参数 48 case 100: 49 Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show(); 50 break; 51 case 101: 52 Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show(); 53 break; 54 case 102: 55 Toast.makeText(OptionMenus_text.this, "点击了菜单三", 1).show(); 56 break; 57 case 103: 58 Intent intent = new Intent(); 59 intent.setClass(this, AlertDialog_text.class); 60 item.setIntent(intent); //菜单项创建activity的方法 61 break; 62 63 default: 64 break; 65 } 66 67 return super.onOptionsItemSelected(item); 68 69 } 70 }
效果图:
时间: 2024-11-10 05:45:25