一 说明
android 3.0后出现, 在3.0之前称为Title Bar 显示位置在标题栏上可以显示应用程序的图标和activity的标题创建方式的和系统菜单相似, 区别在于: android:showAsAction=""ifRoom 当ActionBar中有空间 则显示always 一直显示在ActionBar中never 永远都不显示在ActionBar中withText 显示文字collapseActionView 可以折叠 二, ActionBar中提供的功能1, 显示选项菜单的菜单项2, 可以使应用程序的图标作为返回上一级界面的功能3, 提供了交互式View 和 action View4, 可以实现基于Tab的导航方式, 可以切换Fragment5, 下拉导航6, ActionProvider的使用三, 创建方式1, 在res/menu 文件中创建每一个菜单项 声明<item/>显示方式: showAsAction 图标: icon2, 在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() 显示ActionBaractionBar.hide() 隐藏ActionBar七, Action View 的使用 可以编辑动作项, 如searchView控件可以直接显示在ActionBar实现方式有两种:1, actionViewClass 属性 实现了CollapsibleActionView类2, actionLayout属性 把普通的布局页面显示八, ActionBar Tab 导航的功能 通过选项标签来切换FragmentActionBar + Fragment1, 获取ActionBar的对象, 并且设置导航的模式为TABS setNavigationMode (int mode) 设置导航模式 NAVIGATION_MODE_STANDARD 默认方式 NAVIGATION_MODE_LIST 列表方式 NAVIGATION_MODE_TABS tab标签模式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);
或者::theme="@android:style/Theme.Black.NoTitleBar"实现Fragment切换实例:
- 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
- }
- }
- 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;
- }
- }
-
- <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>