標籤:android style blog class code java
ActionBar取代了以前的TitleBar,是一種更加靈活的人機互動方式;
ActionBar並不是完全自立門戶的一個新興的東西,而是和3.0以下版本的menu進行了合并整合;
so,添加actionbar的方式肯定和添加menu方式類似;
1.常見普通ActionBar
先來看一個menu的xml配置
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:showAsAction="always|collapseActionView" android:title="settings"/></menu>
其中,showAsAction是一個枚舉類型的值,有5個取值;
- never:不顯示在actionBar上,只有通過menu菜單才能呼出此功能表項目;
- ifroom:如果actionBar上有足夠的空間則顯示;
- always:總是顯示;
- collapseActionView:為瞭解決空間的問題,收縮ActionView;
- withText:顯示文字;
註:它們之間可以配合使用;
2.上下分開的獨立的ActionBar
實現這樣的功能其實只需要一句代碼:
android:uiOptions="splitActionBarWhenNarrow"
將這段代碼放置到清單設定檔的對應的activity裡面即可
3.可擴充的ActionBar(搜尋方塊)
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_query" android:actionLayout="@layout/al" android:showAsAction="always|collapseActionView" android:title="query"/></menu>
al.xml
<?xml version="1.0" encoding="utf-8"?><EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" ></EditText>
注意在menuitem裡面配置的android:actionLayout屬性,他代表當點擊item的時候需要顯示的view;也可通過android:actionViewClass屬性指定;
這裡再介紹幾個相關的方法
》》監聽actionView的展開與關閉事件
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); for (int i = 0; i < menu.size(); i++) { menu.getItem(i).setOnActionExpandListener( new OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem arg0) { Log.e("tag", "onMenuItemActionExpand"); return true; } @Override public boolean onMenuItemActionCollapse(MenuItem arg0) { Log.e("tag", "onMenuItemActionCollapse"); return true; } }); } return super.onCreateOptionsMenu(menu); }
4.Tab樣式ActionBar
添加實現代碼
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab); mActionBar = getActionBar(); mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME); ActionBar.Tab tabA = mActionBar.newTab().setText("ATab"); ActionBar.Tab tabB = mActionBar.newTab().setText("BTab"); tabA.setTabListener(new MyTabsListener(new AFragment())); tabB.setTabListener(new MyTabsListener(new BFragment())); mActionBar.addTab(tabA, 0); mActionBar.addTab(tabB, 1); mActionBar.setSelectedNavigationItem(1); }
MyTabsListener.java(監聽tab)改變事件
protected class MyTabsListener implements ActionBar.TabListener { private Fragment frag; public MyTabsListener(Fragment frag) { super(); this.frag = frag; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.replace(R.id.framel, frag); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } }
5。。。未完待續