在 ActionBar 添加刷新按钮
在以前版本的 Gmail 应用中,ActionBar 上有个刷新菜单,点击一下刷新菜单变成一个转圈的刷新标示动画图片。 之前实现该功能的时候都是使用一个类库 RefreshActionItem来实现的。RefreshActionItem 还支持一些扩展功能,功能比较丰富。
今天无意中又发现一个简单的实现方式。如果您只需要一个刷新的效果,则可以考虑这种方法, 实现方式如下:
1. 首先定义一个 Menu xml 文件:
1
2
3
4
5
6
7
8
9
10
11
|
<? xml version = "1.0" encoding = "utf-8" ?> < item android:id = "@id/menu_refresh" android:icon = "@drawable/icon_refresh" android:orderInCategory = "100" android:showAsAction = "always" android:title = "@string/action_refresh" /> </ menu > |
2. 然后创建一个代表刷新进度的自定义 ProgressBar 布局文件 actionbar_indeterminate_progress.xml:
1
2
3
4
5
6
7
8
9
10
|
android:layout_height = "wrap_content" android:layout_width = "56dp" android:minWidth = "56dp" > < ProgressBar
= "32dp" android:layout_height = "32dp" android:layout_gravity = "center" style = "?indeterminateProgressStyle"
</ FrameLayout > |
注意,为了显示美观,上面的 宽度和高度 不同的版本和屏幕可能需要设置不一样的值,可以在不同的 dimens.xml 中设置。
3. 在 Activity 代码中,获取到该 MenuItem 并根据刷新情况来设置 ActionView:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
private
@Override public
mOptionsMenu // getMenuInflater().inflate(R.menu.main_content, return
; } public
boolean
if
null ) return ; } final
if
null ) if
MenuItemCompat.setActionView(refreshItem, } else
MenuItemCompat.setActionView(refreshItem, null ); } } } |
这里为了兼容 AppCompat (android 3.0 之前的版本)用了 MenuItemCompat 来设置 ActionView。
现在,根据您的刷新逻辑,只需要调用 setRefreshActionButtonState 函数就可以启用刷新动画了。
这种方式,值得一提的是, 如果你设置了 ActionView,则就是一个自定义 ActionItem,如果在 ActionView 中你不处理 OnClick 事件,则用户点击该菜单是没响应的,这种行为刚好是应用需要的行为。
本文出自 云在千峰,转载时请注明出处及相应链接。
本文永久链接: http://blog.chengyunfeng.com/?p=572
在 ActionBar 添加刷新按钮的更多相关文章
- sencha panel的头header上添加刷新按钮
var plet3=Ext.create('portaltest3.view.Portlet', { title: '提醒', ...
- Android Actionbar 添加返回按钮
setHomeButtonEnabled这个小于4.0版本的默认值为true的.但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击.没有向左的小图标. true 图标可以点击 ...
- 如何给magento的产品页面添加返回按钮
如何给magento的产品页面添加返回按钮,最模板提供教程 第一步: 打开 E:\xampp\htdocs\magento\skin\frontend\default\bluescale\css\st ...
- iOS 为键盘添加隐藏按钮
// 为键盘添加隐藏按钮 UIToolbar * backView = [[UIToolbar alloc]initWithFrame:CGRectMake(, , , )]; [backView s ...
- easyui datagrid 的分页刷新按钮
datagrid 刷新bug: 情形: 当用户A,B 同时操作 datagrid时(记录1,记录2.记录3).如果A如果删除记录1, B此时已选中了记录1 ,记录2 , 这时B点击分页中的刷新按 ...
- iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)
自定义UITabBar替换系统默认的,目的是为了在UITabBar中间位置添加一个“+号按钮”,下面我们来聊聊具体的实现. 1.自定义WBTabBar,让其继承自UITabBar,代码如下: // / ...
- wuzhicms刷新按钮的功能开发
这个刷新按钮可以刷新当前框架的页面. 但有的页面使用了弹窗打开后,再点击刷新就会打开之前的弹窗页面. 如: 再刷新的时候,这个框架内容就变了.而这里,我们实际需要刷新的是列表页面 打开这个程序的具体文 ...
- Visual Studio 2008中添加运行按钮 转载
在Visual Studio 2008中添加运行按钮 默认情况下,VS2008中的工具栏上没有运行按钮,只有调试(Debug)按钮,可按照以下方法添加 1.点击菜单Tools(工具)->Cust ...
- jquery mobile Checkbox动态添加刷新及事件绑定
jquery mobile Checkbox动态添加刷新及事件绑定 在微信项目中,涉及到一个多选功能.数据来自后台数据库,需要动态加载. 项目结构:微信api+web app.使用jquery mob ...
随机推荐
- AndroidStudio怎么将开源项目发布到jcenter
前言 自己在网上搜了一大堆,大体就两种方法,而我选择的是其中代码少的的方法,不过他们或多或少留下了少许的坑,(按他们的方法我是上传成功,但不能发布到jCenter上去,也可能是我自己的问题o(≧v≦) ...
- ubuntu 下编译安装 mysql php nginx 及常见错误 (持续添加)
mysql mysql 可以使用mysql 官方提供的apt源进行安装 参见这里 php 安装前先安装一些常见库 sudo apt-get install libpng16-16 libpng16-d ...
- Linux下载jdk ,Linux如何下载jdk
Linux下载jdk Linux如何下载jdk >>>>>>>>>>>>>>>>>>> ...
- Java中的I/O流
import java.io.*//生成代表输入流的对象fis=new FileInputStream("e:/src/from.txt") //生成代表输出流的对象 fos=ne ...
- MYSQL批处理
待更新 版权声明:本文为博主原创文章,未经博主允许不得转载.
- .Net程序员学习Linux(一)
本次知识点:Linux系统的多终端切换,linux下的用户,linux远程访问工具使用,linux下重要的目录,命令的组成,通配符,linux的路径问题,文件操作的综合运用 为什么学习linux? 1 ...
- jquery table的隔行变色 鼠标事件
一.鼠标事件 mouseover(function(){}); 鼠标移动到目标事件 mouseout(function(){}); 鼠标离开目标的事件 二.具体应用代码 <body> &l ...
- oc 获取当前时间
//获取当前日期 NSDate* date = [NSDate date]; NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; ...
- C#一些小技巧(二)
教你们怎么改配色方案,因为本人智障了很久,每次想改颜色的时候都会看到一大圈的选项,难以琢磨,但是智障了那么久终于被我找到了所有的关联. 首先,要告诉你们的是,其实C#里面要改的东西只有那么几个,但是注 ...
- 设计模式之 Singleton 单例模式
先上两段代码,区别仅在于是否涉及线程安全. 首先是不涉及多线程的单例: public class Singleton { private final static Singleton INSTANCE ...