android - actionbar

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

privatestaticfinalint MENU_INFO_ID = Menu.FIRST;

privatestaticfinalint MENU_EXIT_ID = Menu.FIRST + 1;

privatestaticfinal intMENU_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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章