android - actionbar

来源:互联网 发布:淘宝上的日系店铺 编辑:程序博客网 时间:2024/05/07 08:55
1. 首先在activity的onCreate() 方法里面 

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

setContentView(R.layout.activity_main);

this.getActionBar().show();

}


2. 定义菜单项

//menu item id

privatestaticfinalintMENU_INFO_ID = Menu.FIRST;

privatestaticfinalintMENU_EXIT_ID = Menu.FIRST + 1;

privatestaticfinalintMENU_REFRESH_ID = Menu.FIRST + 2; //点击刷新按钮后重新搜索蓝牙设备并添加到已有蓝牙设备列表中

private static final int MENU_TEST_ID = Menu.FIRST + 3;    //测试按钮


3. 在activity的onCreate()方法里面强制屏蔽手机的实体菜单键

/*

*强制屏蔽手机实体菜单键

*如果不强制屏蔽实体菜单按键,那么在有实体菜单键的手机上面,如果actionbar的菜单项显示不下之后,不会出现overflow按钮,而是在实体菜单键显示。

*屏蔽之后,action bar放不下后,就显示三个点的overflow键了,放不下的菜单项都在里面了。

*/

//----------------------

try {

ViewConfiguration mconfig = ViewConfiguration.get(this);

      java.lang.reflect.Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");

      if(menuKeyField !=null) {

          menuKeyField.setAccessible(true);

          menuKeyField.setBoolean(mconfig, false);

      }

  } catch (Exception ex) {

}

//---------------------


4. 创建菜单键并显示为action即可。

如果SHOW_AS_ACTION_NEVER就会放入overflow菜单项下

如果SHOW _AS_ACTION_IF_ROOM 在actionbar没有空间才会放入overflow菜单下

如果SHOW_AS_ACTION_ALWAYS就会始终显示在action bar上

//action bar实际上就是以前的option menu菜单

//menu item creation

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

//getMenuInflater().inflate(R.menu.activity_main, menu);

//define menu items

menu.add(0,MENU_INFO_ID,1,this.getResources().getString(R.string.menu_editActivity_menuItem_info))

.setIcon(android.R.drawable.ic_menu_info_details)

.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

menu.add(0,MENU_EXIT_ID, 2,this.getResources().getString(R.string.menu_editActivity_menuItem_exit))

.setIcon(android.R.drawable.ic_menu_close_clear_cancel)

.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

menu.add(0,MENU_REFRESH_ID,0,this.getResources().getString(R.string.actionbar_refresh_button))

.setIcon(android.R.drawable.ic_menu_rotate)

.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

menu.add(0,MENU_TEST_ID, 3,"test")

.setIcon(android.R.drawable.ic_dialog_alert)

.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

return true;

}

0 0