Android开发之Menu和actionBar

时间:2021-08-30 12:01:32

一、通过Menu目录下创建一个布局文件:

  先看代码meu/main.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:id="@+id/setting1"
         android:showAsAction="never"
         android:orderInCategory="100"
         android:title="@string/setting1"/>
     <item android:id="@+id/setting2"
         android:orderInCategory="100"
         android:showAsAction="never"
         android:title="@string/setting2"/>
 </menu>

MainActivity:

 @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.main,menu);
         return super.onCreateOptionsMenu(menu);
     }

 @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()){
             case R.id.setting1:   Toast.makeText(this,"Setting1",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.setting2:   Toast.makeText(this,"Setting2",Toast.LENGTH_SHORT).show();
                 break;
         }
     return super.onOptionsItemSelected(item);
     }

1、orderInCategory属性:

  actionbar里每个item的优先级,值越大优先级越低,actionbar地方不够就会放到overflow中

2、接下来介绍一下showAsAction属性:

  (1)always:这个值会使菜单项一直显示在ActionBar上。

  (2)ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。

  (3)never:这个值菜单永远不会出现在ActionBar是。

  (4)withText:这个值使菜单和它的图标,菜单文本一起显示。

  下面是三种显示效果:

    Android开发之Menu和actionBar

二、动态添加:

  动态添加的代码如下:

  

 @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         menu.add(0,1,0,"后退");
         menu.add(0,2,0,"前进");
         return super.onCreateOptionsMenu(menu);
     }

 @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()){
             case 1:
                 Toast.makeText(this,"退",Toast.LENGTH_SHORT).show();
                 break;
             case 2:
                 Toast.makeText(this,"进",Toast.LENGTH_SHORT).show();
                 break;
         }
         return super.onOptionsItemSelected(item);
     }