ActionBar(5)自定义操作项(Action item)

发布时间:2024-11-26 14:19

会议中,'Agenda'代表议程,'Action Item'是待办事项 #生活技巧# #职场沟通技巧# #商务英语#

1.操作视窗

可以添加一个视图作为一个Action Item。这个视图被称作操作被称作操作视窗,通过在xml元素的android:actionLayout属性制定我们希望现实布局资源的ID(例如@layout/mysearchview)

操作视窗是作为操作项目按钮的替代品显示在操作栏中的一个可视构件。例如,如果你有一个用于搜索的可选菜单项,你可以用SearchView类来替代操作栏上的搜索按钮,如图7所示:

             

       图7. 折叠(上)和展开(下)的搜索视窗的操作栏

       要个菜单资源中的一个项目声明一个操作视窗,你既可以使用android:actionLayout属性也android:actionViewClass属性来分别指定一个布局资源或要使用的可视构件类。例如:

<?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>  

        android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

2.操作视窗事件

       如果需要给操作视窗添加一些事件,那么就需要在onCreateOptionsMenu()回调执行期间做这件事。你能够通过调用带有菜单项ID的findItem()方法来获取菜单项,然后再调用getActionView()方操作视窗中的元素。例如,使用以下方法获取上例中的搜索视窗构件。

@Override   public boolean onCreateOptionsMenu(Menu menu) {       getMenuInflater().inflate(R.menu.options, menu);       SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();              ...       return super.onCreateOptionsMenu(menu);   }

3.处理可折叠的操作视窗

        操作视窗让你在不改变Activity或Fragment的情况下,就可以给用户提供快捷的访问和丰富的操作。但是,默认情况下让操作视窗可见可能不太合适。要保证操作栏的空间(尤其是在小屏幕设备上运行时),你能够把操作视窗折叠进一个操作项按钮中。当用户选择这个按钮时,操作视窗就在操作栏中显示。被折叠的时候,如果你定义了android:showAsAction=”ifRoom”属性,那么系统可能会把这个项目放到溢出菜单中,但是当用户选项了这个菜单项,它依然会显示在操作栏中。通过给android:showAsAction属性添加“collapseActionView”属性值,你能够让操作视窗可以折叠起来。

        因为在用户选择这个项目时,系统会展开这个操作视窗,所以你不必要在onOptionsItemSelected()回调方法中响应这个菜单项。在用户选择这个菜单项时,系统会依然调用onOptionsItemSelected()方法,但是除非你在方法中返回了true(指示你已经替代系统处理了这个事件),否则系统会始终展开这个操作视窗。

       当用户选择了操作栏中的“向上”图标或按下了回退按钮时,系统也会把操作视窗折叠起来。

如果需要,你能够在代码中通过在expandActionView()和collapseActionView()方法来展开或折叠操作视窗。

       注意:尽管把操作视窗折叠起来是可选的,但是,如果包含了SearchView对象,我们推荐你始终把这个视窗折叠起来,只有在需要的时候,由用户选择后才把它给展开。在提供了专用的“搜索”按钮的设备上也要小心了,如果用户按下了“搜索”按钮,那么也应该把这个搜索视窗给展开,简单的重写Activity的onKeyUp()回调方法,监听KEYCODE_SEARCH类型的按键事件,然后调用expandActionView()方法,就可以把操作视窗给展开。

如果你需要根据操作视窗的可见性来更新你的Activity,那么你可以定义一个OnActionExpandListener事件,并且用setOnActionExpandListener()方法来注册这个事件,然后就能够在操作视窗展开和折叠时接受这个回调方法了,如:

@Override   public boolean onCreateOptionsMenu(Menu menu) {       getMenuInflater().inflate(R.menu.options, menu);       MenuItem menuItem = menu.findItem(R.id.actionItem);       ...          menuItem.setOnActionExpandListener(new OnActionExpandListener() {           @Override           public boolean onMenuItemActionCollapse(MenuItem item) {                              return true;             }              @Override           public boolean onMenuItemActionExpand(MenuItem item) {                              return true;             }       });   }  

网址:ActionBar(5)自定义操作项(Action item) https://www.yuejiaxmz.com/news/view/280659

相关内容

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能
自己打蜡怎么操作
通过API接口,轻松获取生活服务资信
如何开发设备端本地定时功能
如何开发自有品牌App的本地定时功能
构建工作流自动化的 5 个最佳工具
构建工作流自动化的 5 个最佳工具
怎么管理自己的工作和生活?我尝试了 Notion+滴答清单
自有品牌App如何开发场景自动化
js数据操作笔记整理

随便看看