学向勤中得,萤窗万卷书。这篇文章主要讲述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切换实例:
[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
- }
- }
- 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 通过JNI实现守护进程,使得Service服务不被杀死
- android——判断网络状态
- 在Android开发中如何判读当前设备是否连接网络
- Mosquitto搭建Android推送服务番外篇一(各种报错解决)
- Android开发-之五大布局
- 菜鸟的Android学习之旅
- 二叉树(二叉树的类型有哪些(详细指南))
- Python如何使用round()函数(代码示例)
- 如何实现模式搜索Boyer Moore算法(详细解析和实现)