轉載自 http://www.apkbus.com/android-105602-1-1.html
對於這ActionBar我想很多人都想了解一下到底是怎麼一個使用方法,以及它都存在哪些可操作的和使用的地方。
如下圖所示:
這便是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)裏面獲取的,例如:
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
當點第一個按鈕時:
代碼的實現其實也很簡單:
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
當點擊第二個按鈕時:
顯示一個可以點擊下拉的列表,代碼如下
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是總是。
如圖所示:
當點擊item1這個圖標區域時:出現一個:submenu。顧名思義 這個下拉的item就是從屬於item1的submenu,如果你想要達到這樣的效果,只需要在menu中添加一個submenu便可實現這個效果例如本實例的簡單實現:
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)
瞭解了這些,相信大家對這些區域對應的點擊事件的處理都不是難事。