咱們來說說有趣的Actionbar吧

Actionbar這個控制元件是3.0以後新增的,Google在13年的時候把它加入了v7包,現在第三方的Actionbarserlock基本沒什麼用了,

要相容2.3版本的話,得用v7包,v7包要注意,不僅是一個jar包,它是一個庫,有資原始檔,v7-appcompat-***,***為版本號,注意:

版本號和主專案中的compile-sdk一定要匹配,complile-sdk必須大於或者等於v7庫的版本號,不然v7裡面的style會報錯。

然後,你的Activity得繼承ActionbarActivity,這樣就OK了

Actionbar是幹嘛的呢,其實就是一個導航欄,基本上是下面兩種效果。

     

分別對應標籤模式和下拉模式

// 標籤模式
private void tabActionBar() {
actionBar.setIcon(R.drawable.onemt_liked_big);
actionBar.setTitle("GG");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText("1").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("2").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("3").setTabListener(this));
}
// 下拉模式
private void listActionBar() {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array, android.R.layout.simple_spinner_dropdown_item);
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);
}

當然,你不想用標籤,也不想用下拉,就想用導航欄上面那幾個圖示也可以NavigationMode就設成正常或者不設定都可以。

然後,注意Activity中的兩個重要的回撥方法

//建立Actionbar的選單
@Override
public boolean onCreateOptionsMenu(android.view.Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
} //Actionbar選單的點選事件
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(context, "df", Toast.LENGTH_SHORT).show();
break; default:
break;
} return super.onOptionsItemSelected(item);
}

Actionbar是怎麼佈局的,點選哪個圖示有什麼反應,都通過這兩個方法設定。menu資原始檔中提供了Actionbar的圖片的個數,屬性,以及排列

最後,你想自定義Actionbar怎麼辦?

//自定義佈局
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(LayoutInflater.from(this).inflate(R.layout.customactionbar, null));

非常簡單,用自定義佈局就OK了

PS:

歡迎大家關注我的微信公眾號"大土豆愛開發",技術包括但不限於JavaEE,Android,Git等。