Android中的ActionBar的简介(翻译自官方文档)——————个人笔记
来源:互联网 发布:如何开手机淘宝 编辑:程序博客网 时间:2024/05/18 00:17
ActionBar在3.0以后提供,在主题为Theme.Holo中的Activity中是默认存在的。
向下兼容:
1、删除或隐藏ActionBar
a.在指定的Activity指定主题@android:style/Theme.Holo.NoActionBarf
b.使用方法hide()隐藏,或者使用show()方法显示
note:
当需要多次隐藏、显示ActionBar的时候,由于每次显示或隐藏的时候,应用需要re-layout整个布局,
这样效率很低,所以需要使用overlay mode。这个overlay mode 把action bar绘制在Activity布局的
最上层,使用这种方式,可以优化效率。
使用overlay mode 的方法:创建一个主题,并在主题中把android:windowActionBarOverlay设置为true。
2、添加Actionitem
3、使用Split ActionBar
4.0以后的系统提供split action bar 用于优化不同屏幕大小的用户体验
使用方法:在清单文件中的activity或application节点中添加属性:uiOptions="splitActionBarWhenNarrow"
使action bar icon and title失效或者隐藏的方法:
setDisplayShowHomeEnabled(false)
setDisplayShowTitleEnabled(false))
4、Using the App Icon for Navigation
5、添加Action View
1.添加
在menu下的xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="@string/menu_search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
</menu>
在showAsAction属性中添加collapseActionView的时候,点击当前的item就会展开actionViewClass指定的view对象
可以在onCreateOptionsMenu方法中使用Menu对象来获取这个actionViewClass对象
eg:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
for more information see Creating a Search Interface.
2.处理Action View的点击事件
由于系统会在点击item时会展开显示这个ActionView,当在onOptionsItemSelected方法中返回true的时候(代表有用户自定义),
默认的展开动作取消。
如果需要自行展开,可以使用MenuItem中的 expandActionView()和collapseActionView()
如果移动设备提供搜索键,则需要重写onKeyUp方法中监听KEYCODE_SEARCH事件,然后调用方法展开。
可以通过setOnActionExpandListener()方法来监听指定的MenuItem的展开和折叠
6、添加Action provider
a.ShareActionProvider
b.Using the ShareActionProvider
当显示这些选项的时候,会根据用户使用的次数来排序,这些历史文件保存在DEFAULT_SHARE_HISTORY_FILE_NAME,可以通过
setShareHistoryFileName()方法来设置各自的历史文件(传入一个xml文件名:custom_share_history.xml)
添加的步骤:
在menu的xml布局文件中添加 android:actionProviderClass="android.widget.ShareActionProvider"
然后使用响应的对象setShareIntent()来设置要启动的应用的Intent。
c.自定义Action provider
继承ActionProvider这个类,然后按需实现以下方法:
ActionProvider() 构造方法,传入一个Context对象
onCreateActionView() 返回action item的视图 (通常使用构造中的context对象来膨胀xml布局,然后返回),在这里进行
action item的事件的处理。
onPerformDefaultAction()在overflow栏中选中的时候调用,提供一个默认的action
当actionprovider 提供一个子菜单的时候,系统会调用onPrepareSubMenu() ,这个时候系统不会调用onPerformDefaultAction()
7、添加Navigation Tabs
a.先使用setNavigationMode(NAVIGATION_MODE_TABS),设置为navigation的模式
b.新建ActionBar.Tab对象,并设置setTabListener(), setText() and/or setIcon()
c.把创建的Tab对象添加到ActionBar中。
ps:在activity中要保存当前选中的tab,使用方法 getSelectedNavigationIndex()获取position
例子:demo下面的NavigationTabActionBarActivity.java
8、添加Drop-down Navigation
作为另一种Navigation的模式
添加步骤:
a.把模式设置成:setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
b.创建一个SpinnerAdapter,提供下拉列表的选项的显示视图和数据
c.实现ActionBar.OnNavigationListener 取处理选中下拉列表中的选项的事件
d.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback)把适配器跟事件处理绑定在一起
例子;
9、ActionBar样式的自定义,参见文档Ui部分的ActionBar
向下兼容:
1、删除或隐藏ActionBar
a.在指定的Activity指定主题@android:style/Theme.Holo.NoActionBarf
b.使用方法hide()隐藏,或者使用show()方法显示
note:
当需要多次隐藏、显示ActionBar的时候,由于每次显示或隐藏的时候,应用需要re-layout整个布局,
这样效率很低,所以需要使用overlay mode。这个overlay mode 把action bar绘制在Activity布局的
最上层,使用这种方式,可以优化效率。
使用overlay mode 的方法:创建一个主题,并在主题中把android:windowActionBarOverlay设置为true。
2、添加Actionitem
3、使用Split ActionBar
4.0以后的系统提供split action bar 用于优化不同屏幕大小的用户体验
使用方法:在清单文件中的activity或application节点中添加属性:uiOptions="splitActionBarWhenNarrow"
使action bar icon and title失效或者隐藏的方法:
setDisplayShowHomeEnabled(false)
setDisplayShowTitleEnabled(false))
4、Using the App Icon for Navigation
5、添加Action View
1.添加
在menu下的xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="@string/menu_search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
</menu>
在showAsAction属性中添加collapseActionView的时候,点击当前的item就会展开actionViewClass指定的view对象
可以在onCreateOptionsMenu方法中使用Menu对象来获取这个actionViewClass对象
eg:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
for more information see Creating a Search Interface.
2.处理Action View的点击事件
由于系统会在点击item时会展开显示这个ActionView,当在onOptionsItemSelected方法中返回true的时候(代表有用户自定义),
默认的展开动作取消。
如果需要自行展开,可以使用MenuItem中的 expandActionView()和collapseActionView()
如果移动设备提供搜索键,则需要重写onKeyUp方法中监听KEYCODE_SEARCH事件,然后调用方法展开。
可以通过setOnActionExpandListener()方法来监听指定的MenuItem的展开和折叠
6、添加Action provider
a.ShareActionProvider
b.Using the ShareActionProvider
当显示这些选项的时候,会根据用户使用的次数来排序,这些历史文件保存在DEFAULT_SHARE_HISTORY_FILE_NAME,可以通过
setShareHistoryFileName()方法来设置各自的历史文件(传入一个xml文件名:custom_share_history.xml)
添加的步骤:
在menu的xml布局文件中添加 android:actionProviderClass="android.widget.ShareActionProvider"
然后使用响应的对象setShareIntent()来设置要启动的应用的Intent。
c.自定义Action provider
继承ActionProvider这个类,然后按需实现以下方法:
ActionProvider() 构造方法,传入一个Context对象
onCreateActionView() 返回action item的视图 (通常使用构造中的context对象来膨胀xml布局,然后返回),在这里进行
action item的事件的处理。
onPerformDefaultAction()在overflow栏中选中的时候调用,提供一个默认的action
当actionprovider 提供一个子菜单的时候,系统会调用onPrepareSubMenu() ,这个时候系统不会调用onPerformDefaultAction()
7、添加Navigation Tabs
a.先使用setNavigationMode(NAVIGATION_MODE_TABS),设置为navigation的模式
b.新建ActionBar.Tab对象,并设置setTabListener(), setText() and/or setIcon()
c.把创建的Tab对象添加到ActionBar中。
ps:在activity中要保存当前选中的tab,使用方法 getSelectedNavigationIndex()获取position
例子:demo下面的NavigationTabActionBarActivity.java
8、添加Drop-down Navigation
作为另一种Navigation的模式
添加步骤:
a.把模式设置成:setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
b.创建一个SpinnerAdapter,提供下拉列表的选项的显示视图和数据
c.实现ActionBar.OnNavigationListener 取处理选中下拉列表中的选项的事件
d.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback)把适配器跟事件处理绑定在一起
例子;
9、ActionBar样式的自定义,参见文档Ui部分的ActionBar
0 0
- Android中的ActionBar的简介(翻译自官方文档)——————个人笔记
- Android中的Menu的简介(翻译自官方文档)——————个人笔记
- Android中的InputEventsr的简介(翻译自官方文档)——————个人笔记
- Kafka官方文档翻译——简介
- Android官方教程翻译(5)——设置ActionBar
- Android官方教程翻译(6)——添加ActionBar
- unity官方文档翻译——Android
- java中的反射 1—— 简介@译自Oracle官方文档
- android官方技术文档翻译——Android Lint
- Android官方文档翻译——Context(一)
- android官方技术文档翻译——工具属性
- android官方技术文档翻译——switch 语句转换
- android官方技术文档翻译——aar 格式
- Android官方技术文档翻译——Apk 拆分机制
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——构建工作流
- Android官方技术文档翻译——ApplicationId 与 PackageName
- Android官方技术文档翻译——清单合并
- DWR实现省市级联
- 游戏 设计 理论{{{1
- Know the Core Objects of Your App
- VC---Explore.exe重启后,进程托盘消失恢复办法
- dio do ox sp
- Android中的ActionBar的简介(翻译自官方文档)——————个人笔记
- line 1: syntax error: "(" unexpected
- 超级实用且不花哨的js代码大全
- C专家编程第四天
- Licenses and Certificates, and how AD RMS protects and consumes documents
- Ajax servlet 错误{{{1
- JAVA自定义注解
- 网站访问统计代码
- 提示"cannot instantiate abstract class due to following members"? .