Android ActionBar使用方法

轉載自 http://www.apkbus.com/android-105602-1-1.html

對於這ActionBar我想很多人都想了解一下到底是怎麼一個使用方法,以及它都存在哪些可操作的和使用的地方。
如下圖所示:

actionbar1.jpg (22.48 KB, 下載次數: 148)

下載附件  保存到相冊

2013-3-31 02:09 上傳


這便是ActionBar的基本內容。
獲得ActionBar的方法很簡單actionBar = this.getActionBar();
1.Home圖標區域:這裏的圖標當然可以在清單文件中定義,也可以在代碼中定義,但是在代碼中定義需要請求設置的"資格",即需要添加以下代碼
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId);
而如果想要對home圖標進行點擊時間處理,則需要在爲這個icon“使能”:
actionBar.setDisplayHomeAsUpEnabled(true);
此home圖標的id便是androi.R.id.home;
這個home點擊事件的監聽是在public boolean onMenuItemSelected(int featureId, MenuItem item)裏面獲取的,例如:

[Java] 純文本查看 複製代碼
1
2
3
4
5
6
7
8
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "home", 1).show();
break;
}
}


2.標題區域,相應的也有
actionBar.setDisplayShowTitleEnabled(true);
當然我們也可以給標題欄設置自己的風格,但是那樣也必須在setContentView(R.layout.custom_title);之前添加
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
然後就可以啓用
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, resId);
resId便是自己想要的佈局風格。
3.選項卡區域:這個區域,相信便是大家最想也是最近常使用的區域了,它同時有3中不同風格的類型:
ActionBar.NAVIGATION_MODE_TABS  ActionBar.NAVIGATION_MODE_LIST  ActionBar.NAVIGATION_MODE_STANDARD
ActionBar.NAVIGATION_MODE_STANDARD對於這個區域就不用多說了。
而對於前面兩種如下圖所示:ActionBar.NAVIGATION_MODE_TABS
當點第一個按鈕時:

actionbar2.jpg (16.87 KB, 下載次數: 125)

下載附件  保存到相冊

2013-3-31 02:37 上傳


代碼的實現其實也很簡單:

[Java] 純文本查看 複製代碼
1
2
3
4
5
6
7
8
actionBar.setTitle("選項卡");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText("Tab1")
.setTabListener(MainActivity.this));
actionBar.addTab(actionBar.newTab().setText("Tab2")
.setTabListener(MainActivity.this));
actionBar.addTab(actionBar.newTab().setText("Tab3")
.setTabListener(MainActivity.this));


這裏必須爲tab添加tablistener事件,如果要操作tab切換事件只需要實現監聽方法即可。
implements ActionBar.TabListener
當點擊第二個按鈕時:

actionbar3.png (13.49 KB, 下載次數: 114)

下載附件  保存到相冊

2013-3-31 02:42 上傳


顯示一個可以點擊下拉的列表,代碼如下

[Java] 純文本查看 複製代碼
1
2
3
4
5
6
7
String[] str = { "1", "2", "3", "4", "5" };
actionBar.setTitle("列表");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_spinner_item, str),
MainActivity.this);


同樣的需要實現以下它的點擊監聽事件implements ActionBar.OnNavigationListener 實現接口的方法便可對列表項進行你想要的操作。
4.菜單區域:其實這個區域也就相當於菜單,只是它將menu放到ActionBar這裏而已,事件的監聽和佈局跟操作menu是一樣的。
    而如果你想要將menu放到ActionBar上,只需要將你需要填放的item添加一個android:showAsAction這樣的屬性
他同時提供給你幾個可選的類型:ifRoom|withText 的意思上顯示icon和字體 never是從不,always是總是。
如圖所示:

actionbar4.png (18.38 KB, 下載次數: 111)

下載附件  保存到相冊

2013-3-31 02:50 上傳



當點擊item1這個圖標區域時:出現一個:submenu。顧名思義 這個下拉的item就是從屬於item1的submenu,如果你想要達到這樣的效果,只需要在menu中添加一個submenu便可實現這個效果例如本實例的簡單實現:

[Java] 純文本查看 複製代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_launcher"
android:orderInCategory="3"
android:showAsAction="ifRoom|withText"
android:title="item1">
<menu>
<item
android:id="@+id/save"
android:icon="@drawable/ic_launcher"
android:orderInCategory="4"
android:showAsAction="ifRoom|withText"
android:title="item2"/>
<item
android:id="@+id/item8"
android:icon="@drawable/ic_launcher"
android:orderInCategory="5"
android:showAsAction="ifRoom|withText"
android:title="item3"/>
<item
android:id="@+id/item9"
android:icon="@drawable/ic_launcher"
android:orderInCategory="6"
android:showAsAction="ifRoom|withText"
android:title="item4"/>
</menu>
</item>


這樣就能達到如此效果。對於item的監聽已經強調過,它就是menu的item,所以監聽事件的處理在
public boolean onMenuItemSelected(int featureId, MenuItem item)
瞭解了這些,相信大家對這些區域對應的點擊事件的處理都不是難事。

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