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 ...
随机推荐
- Sql Server按树形结构排序查询表记录
http://blog.csdn.net/dxnn520/article/details/8089149 ----------------------------------------------- ...
- Android课程---用进度条改变图片透明度
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- JS开发windows phone8.1系列之1
http://msdn.microsoft.com/zh-cn/library/windows/apps/dn629638.aspx,要点: 1.了解项目结构:package.appxmanifest ...
- js == 判断
根据阮一峰介绍的算法文章分12部分可判断: 如果x不是正常值(比如抛出一个错误),中断执行. 如果y不是正常值,中断执行. 如果Type(x)与Type(y)相同,执行严格相等运算x === y. 如 ...
- ios-NSMutableAttributedString 更改文本字符串颜色、大小
NSString * string = [NSString stringWithFormat:@"您的号码是%@号",[self backString:dic[@"ran ...
- CSS成长之路----知识点篇
一,ul--li列表水平排列,切居中对齐 主要是利用Li标签中的display属性.设置为display:inline,使li纵向排布,且能够使用text-align:center;使其居中显示 HT ...
- Mac配置
1.显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 2.Mac键盘如何开启键盘上F1 - F12功 ...
- windows下MySQL更改数据库文件目录及1045,1067错误
MySQL安装时不能选择数据库文件的安装位置, 也没有可用的直接更改数据库目录的工具,要想更改数据目录,方法如下: MySQL安装并配置完毕,默认的数据哭安装目录为 C:/ProgramData/My ...
- Long型转化成BigDecimal
Long转成带小数的,最好使用BigDecimal,而不是double. 以下例子,是将long型转化成BigDecimal,这样容易保持精度. public class Test { public ...
- [Android Tips] 14. Using Proguard with Android without obfuscation
Option -dontobfuscate REF Using Proguard with Android without obfuscation