安卓SDK11.0版本以上就支持Action Bar了。所謂的Action Bar實際上就是代替以前的標題欄的存在,如果設置了那就會在Activity的頂部顯示,我們可以在AndroidManifest.xml里面這樣顯示聲明ActionBar:android:theme="@android:style/Theme.Holo"
一般情況下,我們需要在onCreateOptionsMenu里面把自定義的視圖加載進去:
~~~
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
~~~
然后可以知道我們加載了一個R.menu.main的視圖,這個視圖是這樣寫的:
~~~
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/writeArticle"
android:icon="@drawable/ic_launcher"
android:showAsAction="always"
android:title="寫文章">
</item>
</menu>
~~~
第一個item是菜單,第二個item是我自定義的一個項。
其中要注意兩個地方:
1)showAsAction:設置該條目什么時候顯示在ActionBar里面
這個屬性可接受的值有:
1、always:這個值會使菜單項一直顯示在Action Bar上。
2、ifRoom:如果有足夠的空間,這個值會使菜單項顯示在Action Bar上。
3、never:這個值使菜單項永遠都不出現在Action Bar上。
4、withText:這個值使菜單項和它的圖標,菜單文本一起顯示。
2)orderInCategory:actionbar里每個item的優先級,值越大優先級越低,actionbar地方不夠就會放到overflow中。
那么設置了item之后怎么監聽點擊事件呢?
其實item點擊之后會觸發Activity里面的onOptionsItemSelected回調函數,下面是我處理的代碼:
~~~
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.writeArticle:
Toast.makeText(this, "write", 0).show();
break;
default:
Toast.makeText(this, "null", 0).show();
break;
}
return super.onOptionsItemSelected(item);
}
~~~
這樣設置我通過點擊自定義的item writeArticle就能夠Toast一條信息了。
最后是完整的Activity代碼,還是貼出來吧,很簡單。
~~~
package com.example.luntan;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.writeArticle:
Toast.makeText(this, "write", 0).show();
break;
default:
Toast.makeText(this, "null", 0).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
~~~
- 前言
- 安卓ListView一個簡單代碼的注釋和探討
- 安卓wifi熱點編程代碼的若干注釋
- 安卓距離傳感器編程
- 簡單的ScrollView
- 簡單的ListView
- 簡單的ArrayAdapter
- AsyncTask的初步學習
- AsyncTask再度學習
- Handler初步學習
- 開啟系統Activity
- 隱式調用Activity
- Activity的生命周期
- startActivityForResult的初步學習
- 多點觸控拉伸圖片
- LruCache圖片緩存技術
- SQLiteOpenHelper數據庫操作
- 短信攔截器
- 簡單的Notification
- ListView優化以及checkbox狀態問題
- 安卓多線程下載
- 安卓JSON解析初步探討
- 選項卡樣式的fragment
- DrawerLayout實現簡單的側滑功能
- 安卓軟引用解決圖片OOM問題
- 安卓隱式Intent啟動Activity和BroadcastReceiver若干注意點
- Dialog學習筆記
- ActionBar使用