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>
Android ActionBar的基本用法的更多相关文章
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- android的logcat详细用法
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...
- 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)
即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...
- [Xamarin.Android] ActionBar Tips
[Xamarin.Android] ActionBar Tips ActionBar用途 快速搞懂 ActionBar的用途,可以参考下列文章: [Android]使用 ActionBarCompat ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- 【转】Android各种Adapter的用法
转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56) 阅读(143 ...
- Android ActionBar详解
Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar 目录(?)[+] 第4 ...
随机推荐
- 配置非默认端口的监听Listener
- js中cookie
document.cookie='address='+$("#address").val()+';path=/';
- 外部引用JavaScript文件乱码问题
使用js外部文件输出中文乱码解决: 将js文件编码改为和页面的编码相同.
- js循环的总结
js原生的循环有两种,一般的for循环和for...in循环.还有一种常用jQuery.each()循环. 一. js原生循环 a. for循环,代码如下: var myArray = [1,2,3] ...
- Fail to start neutron-server
问题: [root@localhost ~]# systemctl status neutron-server ● neutron-server.service - OpenStack Neutron ...
- MarkdownPad 2
摘要 升级到 Windows 10 后 MarkdownPad 2,遇到了html 渲染错误的问题: windows10 MarkdownPad html渲染错误 awesomium 升级到 Wind ...
- loadrunner generators (controller in windows)
http://my.oschina.net/u/2391658/blog/735690 http://blog.csdn.net/xu1314/article/details/7455114 http ...
- schtasks在win7下提示错误:无法加载列资源
转自: http://blog.chinaunix.net/uid-24946452-id-2887851.html 查看cmd 编码 chcp 如使用 936中文GBK编码的话 schtasks.e ...
- windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”。
1. 问题 windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”. 2. 解决方法. 将下面的文字保存为bat文件执行,其中\\192.168.40.110\Lenovo M7 ...
- c# 相对路径的一些资料
1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory; Result: C:\xxx\xxx 2.获取启动了应用程序 ...