標籤:oar 並且 導航 over copyto ack title 下拉 val
一 說明
android 3.0後出現, 在3.0之前稱為Title Bar 顯示位置在標題列上
可以顯示應用程式的表徵圖和activity的標題
建立方式的和系統功能表相似, 區別在於: android:showAsAction=""
ifRoom 當ActionBar中有空間 則顯示
always 一直顯示在ActionBar中
never 永遠都不顯示在ActionBar中
withText 顯示文字
collapseActionView 可以摺疊
二, ActionBar中提供的功能
1, 顯示選項菜單的功能表項目
2, 可以使應用程式的表徵圖作為返回上一級介面的功能
3, 提供了互動式View 和 action View
4, 可以實現基於Tab的導航方式, 可以切換Fragment
5, 下拉導航
6, ActionProvider的使用
三, 建立方式
1, 在res/menu 檔案中建立每一個功能表項目 聲明<item/>
顯示方式: showAsAction
表徵圖: icon
2, 在Activity中, 重寫父類的 onCreateOptionsMenu(Menu menu) ,載入菜單資源
3, 在Activity中, 重寫父類的 onOptionsItemSelected(MenuItem item) 處理每個Item的點擊事件
四,分割 操作欄 API 14以上
在資訊清單檔中<application/> 或者<activity/> 中添加屬性:android:uiOptions="splitActionBarWhenNarrow"
五, 啟動互動中心圖示
作用: 可以讓當前App的表徵圖作為可以點擊的表徵圖
擷取ActionBar的對象: getActionBar()
setDisplayShowHomeEnabled 設定是否顯示應用程式的表徵圖
setDisplayHomeAsUpEnabled 設定應用程式的表徵圖可以被點擊, 並且在表徵圖的左側出現一個向左的箭頭
setHomeButtonEnabled設定應用程式的表徵圖可以被點擊,但是沒有箭頭
得到應用程式互動中心圖示的ID: android.R.id.home
六, ActionBar中的常用方法
actionBar.isShowing() 判斷當前的ActionBar是否正在顯示
actionBar.show() 顯示ActionBar
actionBar.hide() 隱藏ActionBar
七, Action View 的使用
可以編輯動作項, 如searchView控制項可以直接顯示在ActionBar
實現方式有兩種:
1, actionViewClass 屬性 實現了CollapsibleActionView類
2, actionLayout屬性 把普通的布局頁面顯示
八, ActionBar Tab 導航的功能 通過選項標籤來切換Fragment
ActionBar + Fragment
1, 擷取ActionBar的對象, 並且設定導航的模式為TABS
setNavigationMode (int mode) 設定導航模式
NAVIGATION_MODE_STANDARD 預設
NAVIGATION_MODE_LIST列表方式
NAVIGATION_MODE_TABStab標籤模式
2, 讓當前類實現介面 TabListener , 重寫3個方法
3, 建立 每個Tab項 並且把它增加到ActionBar中
ActionBar.Tab tab = ActionBar.newTab();
tab.setIcon();//設定表徵圖
tab.stText();//設定要顯示的文字
tab.setTabListener();//設定監聽
actionBar.add(tab);//把Tab增加到ActionBar中
九:去除ActionbBar
在setContentView之前 requestWindowFeature(Window.FEATURE_NO_TITLE);
或者:Android:theme="@android:style/Theme.Black.NoTitleBar"
實現Fragment切換執行個體:
[java] view plain copy print?
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- actionBar = getActionBar();
- // 獲得導航模式
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- // 建立ActionBar.Tab 項, 並且把它增加到ActionBar中
- ActionBar.Tab tab = actionBar.newTab();
-
- tab.setText("頭條");
- tab.setIcon(R.drawable.ic_launcher);
- tab.setTabListener(this);
- actionBar.addTab(tab);
-
- tab = actionBar.newTab();
- tab.setText("體育");
- tab.setIcon(R.drawable.ic_launcher);
- tab.setTabListener(this);
- actionBar.addTab(tab);
-
- actionBar.addTab(actionBar.newTab().setText("財經")
- .setIcon(R.drawable.ic_launcher).setTabListener(this));
-
- actionBar.addTab(actionBar.newTab().setText("汽車")
- .setIcon(R.drawable.ic_launcher).setTabListener(this));
- }
-
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- // TODO Auto-generated method stub
- FragmentNew f = new FragmentNew();
- Bundle b = new Bundle();
- int position = tab.getPosition();
- b.putInt("position", position);
- f.setArguments(b);
- ft.replace(R.id.f, f);
-
- }
-
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- // TODO Auto-generated method stub
-
- }
- }
[java] view plain copy print?
- public class FragmentNew extends Fragment {
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- TextView t = new TextView(getActivity());
- int position = getArguments().getInt("position");
-
- switch (position) {
- case 0:
- t.setText("頭條");
- break;
- case 1:
- t.setText("體育");
- break;
- case 2:
- t.setText("財經");
- break;
- case 3:
- t.setText("汽車");
- break;
-
- }
-
- return t;
- }
- }
[html] view plain copy print?
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity" >
-
- <FrameLayout
- android:id="@+id/f"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- </RelativeLayout>
Android--ActionBar的基本用法