Action Bar
来源:互联网 发布:linux做网站需要环境 编辑:程序博客网 时间:2024/05/21 19:23
介绍:
Action Bar是一种新増的导航栏功能,在Android3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕.
用处及目的:
1. 提供一个用于识别应用程序的标示和用户的位置的专用空间。
这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。
2. 在不同的应用程序之间提供一致的导航和视觉体验。
Action bar提供了用于fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。
3. 突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并且在可预见的方法内给用户提供快捷的访问。
对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。
上面的总结一下:Action bar就是替换3.0以前的tittle bar和menu。
接下来一起来学习下这个控件吧。
一:修改Action Bar标题
最简单的一种方式,在清单文件中,看代码
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" //更改项目图标 android:label="@string/app_name" //更改名称 android:supportsRtl="true" android:theme="@style/AppTheme" >
二 :删除Action bar
第一种方法 : <activity android:theme="@android:style/Theme.Holo.NoActionBar">
第二种方法:使用Action bar的 hide()方法,如下:- ActionBar actionBar = getActionBar();
- actionBar.hide();
三 :添加按钮
ActionBar可以根据需要添加文字或者是图标,过多的话会隐藏在overflow按钮里面(右面的三点)
当Activity启动时,调用onCreateOptionsMenu来取出所有按钮,加载menu资源,res-menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_1" android:icon="@mipmap/ic_launcher" app:showAsAction="ifRoom" android:title="item1"/> <item android:id="@+id/action_2" android:icon="@mipmap/ic_launcher" app:showAsAction="ifRoom" android:title="item2"/> <item android:id="@+id/action_settings" android:icon="@mipmap/ic_launcher" app:showAsAction="never" android:title="setting"/></menu>
效果图
这里用了三个item实现了三个Action按钮
属性 id:每一个按钮的标识 icon : 定义的图标 title :要显示的文字(图标正常,通常不显示文字)
showAsAction :指定按钮显示位置 always表示永远显示在actionbar上,屏幕空间不足,不显示
ifRoom表示屏幕空间够显示在ActionBar中,不够就显示在overflow中
never则永远显示在overflow中
如果继承自AppCompatActivity 需要使用app:showAsAction, 继承自Activity 需要使用android:showAsAction
MainActivity中添加方法显示ActionBar
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return super.onCreateOptionsMenu(menu);}
注意:定义的文字默认不显示,但是要有,如果定义的图标在ActionBar上显示,可长按看到title定义的内容
四: 监听事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_1: //添加处理代码 Toast.makeText(this,"1",Toast.LENGTH_LONG).show(); return true; case R.id.action_2: //添加处理代码 Toast.makeText(this,"1",Toast.LENGTH_LONG).show(); return true; case R.id.action_settings: //添加处理代码 Toast.makeText(this,"1",Toast.LENGTH_LONG).show(); return true; } return true;}
五 :使三个小点里的图标和title一起显示出来
//设置menu显示icon@Overrideprotected boolean onPrepareOptionsPanel(View view, Menu menu) { if (menu != null) { if (menu.getClass() == MenuBuilder.class) { try { Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { } } } return super.onPrepareOptionsPanel(view, menu);}
效果图:
就介绍这么多,感兴趣的可以往深处学学。
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- Action Bar
- status bar 、action bar、navigation bar height
- 工具栏(Action Bar)
- 拓扑排序
- LightOJ 1056 Olympics(数学公式)
- 各种分类算法比较
- 解析KMP模式匹配算法
- uva11491
- Action Bar
- Codeforces 713C Sonya and Problem Wihtout a Legend DP(经典)
- 【Android】SQLite 创建数据库,并实现增删改查
- DSRC
- C盘空间异常(坑)
- 8-11
- html的基本标签
- kata题目
- xamarin学习笔记A10(安卓SQLite)