Android--ActionBar的基本用法

 一  说明
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_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);
           或者:android: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>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值