关于Actionbar的那些事
2015-09-21 09:22
686 查看
咱们来说说有趣的Actionbar吧
Actionbar这个控件是3.0以后添加的,Google在13年的时候把它加入了v7包,现在第三方的Actionbarserlock基本没什么用了,
要兼容2.3版本的话,得用v7包,v7包要注意,不仅是一个jar包,它是一个库,有资源文件,v7-appcompat-***,***为版本号,注意:
版本号和主项目中的compile-sdk一定要匹配,complile-sdk必须大于或者等于v7库的版本号,不然v7里面的style会报错。
然后,你的Activity得继承ActionbarActivity,这样就OK了
Actionbar是干嘛的呢,其实就是一个导航栏,基本上是下面两种效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/10/c8528b3e061213b0a05aa27694847087.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/10/fcde460608fff8943a960c4b83ef79bf.png)
分别对应标签模式和下拉模式
当然,你不想用标签,也不想用下拉,就想用导航栏上面那几个图标也可以NavigationMode就设成正常或者不设置都可以。
然后,注意Activity中的两个重要的回调方法
Actionbar是怎么布局的,点击哪个图标有什么反应,都通过这两个方法设置。menu资源文件中提供了Actionbar的图片的个数,属性,以及排列
最后,你想自定义Actionbar怎么办?
非常简单,用自定义布局就OK了
Actionbar这个控件是3.0以后添加的,Google在13年的时候把它加入了v7包,现在第三方的Actionbarserlock基本没什么用了,
要兼容2.3版本的话,得用v7包,v7包要注意,不仅是一个jar包,它是一个库,有资源文件,v7-appcompat-***,***为版本号,注意:
版本号和主项目中的compile-sdk一定要匹配,complile-sdk必须大于或者等于v7库的版本号,不然v7里面的style会报错。
然后,你的Activity得继承ActionbarActivity,这样就OK了
Actionbar是干嘛的呢,其实就是一个导航栏,基本上是下面两种效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/10/c8528b3e061213b0a05aa27694847087.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/10/fcde460608fff8943a960c4b83ef79bf.png)
分别对应标签模式和下拉模式
// 标签模式 private void tabActionBar() { actionBar.setIcon(R.drawable.onemt_liked_big); actionBar.setTitle("GG"); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.addTab(actionBar.newTab().setText("1").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("2").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("3").setTabListener(this)); }
// 下拉模式 private void listActionBar() { actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.array, android.R.layout.simple_spinner_dropdown_item); actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener); }
当然,你不想用标签,也不想用下拉,就想用导航栏上面那几个图标也可以NavigationMode就设成正常或者不设置都可以。
然后,注意Activity中的两个重要的回调方法
//创建Actionbar的菜单 @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); return super.onCreateOptionsMenu(menu); } //Actionbar菜单的点击事件 @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(context, "df", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); }
Actionbar是怎么布局的,点击哪个图标有什么反应,都通过这两个方法设置。menu资源文件中提供了Actionbar的图片的个数,属性,以及排列
最后,你想自定义Actionbar怎么办?
//自定义布局 actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(LayoutInflater.from(this).inflate(R.layout.customactionbar, null));
非常简单,用自定义布局就OK了
相关文章推荐
- 【转载】ASP.Net 中DataTextField和DataValueField
- 将光标定位到某个控件
- 如何为Apache JMeter开发插件(二)——第一个JMeter插件
- 大型架构.net平台篇(WEB层均衡负载nginx)
- DOM Element节点类型详解
- 你能答对吗??
- ubuntu无法识别android手机,出现????????
- infa资料库的使用
- 实现传入两个字符串类型的时间的相减
- 如何将文本内容奇数行与偶数行调换?
- 如何将文本内容奇数行与偶数行调换?
- 高光谱了解
- PHP生成N个不重复的随机数
- File类
- 关于证书
- 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control
- Oracle Lsnrctl - 关于oracle监听器的命令和解释
- Xcode7使用的时候模拟器会黑屏
- SQL对应C#数据类型
- php操作json