在Android中,可以对ListView设置HeaderView和FooterView,其中HeadView或者FooterView并不是ListItem的一部分。
我在使用listview.addFooterView()的时候,结果并没有显示出来FooterView。后来查文档看到,说是addFooterView()的调用一定要在listiew.setAdapter()之前,果然有效。
后来在这里看到,http://stackoverflow.com/questions/4317778/hide-footer-view-in-listview,其实,只要在addAdapter()之前,任意调用了addHeaderView或者addFooterView,在setAdapter()之后调用addHeaderView都是有效的。
参考地址:
http://developer.android.com/reference/android/widget/ListView.html
http://stackoverflow.com/questions/4317778/hide-footer-view-in-listview
https://code.google.com/p/android/issues/detail?id=12870
2012年5月14日星期一
2012年5月11日星期五
Android在layout xml中使用include
在Android的layout样式定义中,可以使用xml文件方便的实现,有时候为了模块的复用,使用include标签可以达到此目的。
例如: <include layout="@layout/otherlayout"></div>
Android开发的官方网站的说明在这里:https://developer.android.com/resources/articles/layout-tricks-reuse.html
其中,有提到: Similarly, you can override all the layout parameters. This means that any android:layout_* attribute can be used with the <include> tag,意思是任何android:layout_*属性都可以应用在<include>标签中。
如果使用如下代码:
<relativelayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
< textview
</linearlayout >
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/somestring"
android:id="@+id/top" />
<include < layout="@layout/otherlayout"
android:layout_below="@id/top" />
</relativelayout >
发现include的otherlayout,并没有在如我们预期的在id/top这个TextView下面,而是忽略了android:layout_below属性。经过Google发现,很多人遇到类似的问题。
发现include的otherlayout,并没有在如我们预期的在id/top这个TextView下面,而是忽略了android:layout_below属性。经过Google发现,很多人遇到类似的问题。
有解决方法是在include的外面再包一层LinearLayout,如下:
<linearlayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top" >
< include layout="@layout/otherlayout">
在这里找到更好的解决方法:http://stackoverflow.com/questions/2316465/how-to-get-relativelayout-working-with-merge-and-include
解答道:必须同时重载layout_width和layout_height熟悉,其他的layout_*属性才会起作用,否这都会被忽略掉。上面的例子应该写成这样:
<include layout="@layout/otherlayout">
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_below="@id/top" />
另外,关于xml的复用,还可以使用merge标签,merge标签主要是用来优化显示的,减少View树的层级,可以参考这里:https://developer.android.com/resources/articles/layout-tricks-merge.html, 翻译版在这里:http://apps.hi.baidu.com/share/detail/20871363
参考网址:
2012年3月26日星期一
毕业了
今天学校毕业典礼,也毕业了很多次了,本以为自己慢慢的麻木了,每次毕业也不禁想起自己的校园生活,认真的看一下自己的校园。
可能不只是人,失去的时候才知道珍惜,当我要离开这个校园的时候,也不免觉得校园很亲切。在这里也待了六年多了,校园环境渐渐熟悉,熟悉校园的每一个角落,小小的校园一切都很自然。以前到别人的学校,感觉哪些不太对劲,虽然嘴上说了自己学校不好一万遍,还是觉得自己学校很舒服。学校也越来越陌生,新的体育馆、新的食堂、新的宿舍楼、新的实验楼、咖啡厅、超市,学校里面的建筑慢慢的换上了新的容颜。可能习惯了校园原来的样子,新的食堂和餐厅,很长时间从来都没有去过,新的宿舍楼和实验楼也与我们没有关系。以前的超市很小,买东西也很方便,现在超市大了,东西也找不到了。学校里面还出现了极不相称的咖啡厅...寝室网段变了,失去了59.64,现在上网开始要登陆了。学校论坛换了皮肤,域名变了。FTP走了,BT来了,最近又换了极丑的样子...学校变化的太快,自己在校园里面活动的圈子也越来越小。之前还会在学校各个教学楼和图书馆穿梭,到后来基本上就是在实验室和寝室了。作为即将离校的“老油条”,突然对比当时入校的时候,变化太大,但我依然熟悉,也依然陌生。
四年的本科生活,已经忘记了很多的细节,学习是当时的主旋律。本科毕业的时候也曾经迷茫和失落。三年后的现在,经历了匆匆的研究生生活,上课、实验室、
实习。很多问题还是没有答案,现在的状态很不像当时想的那样。曾经很在乎的问题,现在也关紧要了。是老了,还是成熟了;是看透了,还是麻木了;是堕落了,还是接收现实了...我不知道,也不会有人告诉我。
毕业了,很多计划的事情没有做,很多要完成的事情,也留下来了烂摊子,以后也没有机会了。虽然早就进入了半工作的状态,却总是把自己当成学生看。今天之后,将不再有“学生”这个挡箭牌,责任和担当也随之而来。新的开始可能不只是生活,而是心态。我不知道我是否做好了准备,但是时间可不管你,往前冲吧...
(2012年3月26日 学三-203)
(2012年3月26日 学三-203)
2012年3月7日星期三
Cygwin的文件权限管理
在使用Cygwin编译的时候,突然遇到这样的问题:
在网上找到解决方案:http://nai-chu.blog.163.com/blog/static/909724402010224852713/
因为我使用的是Cygwin 1.7,我这里转载这部分如下:
Cygwin 1.7 版改用 /etc/fstab 文件来控制权限设置。所以用编辑器打开 c:\cygwin\etc\fstab 文件,在里面添加这一行:
保存文件,整个设置就完成了。
最后,让我们看看在如上设置之后,在Cygwin中创建的新文件的默认权限:
可见,Everyone用户拥有对文件的完全控制权限(在我的电脑上是有了读和可执行的权限,不过我的问题已经解决了),而这正是Microsoft Windows默认的权限。
参考网址:
http://nai-chu.blog.163.com/blog/static/909724402010224852713/
install: cannot open `./obj/local/armeabi-v7a/libnative_camera_r2.2.2.so' for reading: Permission denied根据错误提示,可以知道是文件权限的问题,这个文件是Cygwin的bash编译生成的。Cygwin是模拟Linux环境的,对生成的文件会赋予默认的权限。通过查看此文件的权限,确实有问题,没有读写权限。
在网上找到解决方案:http://nai-chu.blog.163.com/blog/static/909724402010224852713/
因为我使用的是Cygwin 1.7,我这里转载这部分如下:
Cygwin 1.7 版改用 /etc/fstab 文件来控制权限设置。所以用编辑器打开 c:\cygwin\etc\fstab 文件,在里面添加这一行:
none /cygdrive cygdrive binary,user,noacl,posix=0 0 0注:作者原文的这一行设置对我的情况无效,我这里做了修改。
保存文件,整个设置就完成了。
最后,让我们看看在如上设置之后,在Cygwin中创建的新文件的默认权限:
可见,Everyone用户拥有对文件的完全控制权限(在我的电脑上是有了读和可执行的权限,不过我的问题已经解决了),而这正是Microsoft Windows默认的权限。
参考网址:
http://nai-chu.blog.163.com/blog/static/909724402010224852713/
2012年3月3日星期六
Linux把窗口快捷切换到最前的方法
在Linux使用的时候,可能需要来回切换窗口,需要把某个窗口提到最前来,也就是激活,如果没有打开此程序,就先打开。例如经常需要把字典调出来。在Windows下的有道字典就有这个功能。在Linux可以更加方便的对任何程序实现此功能。这里需要用到wmctrl工具。
在Ubuntu下,首先安装:
sudo apt-get install wmctrl
wmctrl的用法有很多,可以使用多种方法来控制窗口。这里主要用到如下功能:
wmctrl -a "window name"
这里-a参数表示激活(Active),后面接窗口的名字,这里并不需要完全精确匹配,只需要是目标窗口的一部分就可以,例如:wmctrl -a "pdf"就可方便激活pdf阅读器(因为pdf阅读器的窗口名字会根据文档名字变化,.pdf是唯一不变的)。
接下来实现:没有打开此程序的话,就直接打开,否则直接激活此程序。可以使用如下脚本,保存为/home/tom/bringToFront文件,第一个参数表示程序名,第二参数表示窗口名(或者窗口名的一部分)。
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
并且给此文件增加可执行权限chmod +x,就可以这样使用次脚本了:
./bringToFront chrome "Chrome"这里会先执行查看是否打开了chrome,如果没有开打,就打开,否则,把Chrome窗口激活。
PS:后来发现有人用了更加简单的方法实现:
wmctrl -a "winname" appname
最后,就是绑定快捷键,Ubuntu的keyboard程序,能够非常方便的实现自定义快捷键绑定:
例如:就定义了几个常用的程序的快捷键如图所示。
参考网址:
2012年2月29日星期三
VIM使用小技巧-重新载入文件
有时候要使用VIM打开了一些文件,但是在其他地方把次文件改动了,例如使用git进行checkout等操作,需要重新载入此文件。
1 重新载入当前文件:
:e2 重新载入所有打开的文件:
:e! #放弃当前修改,强制重新载入
:bufdo e 或者 :bufdo :e!:bufdo命令表示把后面的命令应用到所有buffer中的文件。
参考网址:
1 http://stackoverflow.com/questions/1272007/refresh-all-files-in-buffer-from-disk-in-vim
2 http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers
2012年2月27日星期一
MS实习结束了
从去年10月27日,到今天正好四个月了,明天就要Check out了。四个月,也是我经历最长的一次实习,这里说说我的体会。
1 面试
经过朋友的内推,首先接到电话面试的通知,第一次电话面试,可能也被公司的名气所震慑,感觉很紧张。面试经历了一个小时,基本上全是算法。最后一个算法磕磕碰碰,在面试官的提示下,算是得出了结果。忐忑等了一个星期,得到去公司面试的通知,全程三个小时,三个面试官,都是算法,并且直接在白板上写Code。拿到了实习的offer,实习三个月后,公司安排了正式员工的面试,整个流程差不多,面试过程都是算法并写Code。最后一面是级别比较高的Manager,首先要英文做自我介绍,我顿时就懵了,因为前面所有的面试都是中文,措手不及啊,结结巴巴没有说出几句来。然后就是聊聊实习项目和体验,自己的优缺点,为什么想来这里等一些常规的问题。因为前面形成了思维定式,以为会全是算法,想不到最后一面会这么“文艺”,完全没有准备,自认为表现非常的不好,但是很庆幸最后得到了offer。
MS面试算法算法是王道,准备算法好算法,而且要注意和面试官交流。面试官并不是要看到你会多少算法,还有很重要的是你解决问题的能力,遇到难题,能不能积极思考,并得出解决方案。算法固然重要,但是也要准备常规的面试问题,例如英文自我介绍(外企必备的),自己的优缺点等。我个人很认同MS的面试方式,算法为主,也不会有太难的算法,面试官都很nice,会引导你解决问题。
2 工作
公司上下班的时间非常灵活,没有固定上下班时间,因为公司以结果为导向,只要能够完成任务就可以。大家上下班的时间都比较灵活,Mentor和Manager也不管你什么时候到。实习生请假也比较容易。这是我最喜欢的地方之一。
原则上,MS对实习生有很完善的培养计划和目标,因为从实习生Review和One-One制度上都可以感受到,虽然执行的时候可能会有些偏差。公司的开发工具完全是使用自己的一套,有些并没有对外发布,所以有时候出了问题,搜索都困难。有太多的工具,在我四个月的实习时间里面,很多东西都没有搞清楚。
让我非常惊讶的是公司的办公系统。Email、会议、IM、远程协作都是原来可以整合的如此完善和方便。工作上交流都是英文,自己的Writing skill可能有些进步,但是很遗憾的是,在这段时间里面,并没有联系自己的口语。
3 生活
必须说的是公司的福利确实非常好。可以玩的东西确实很多,乒乓球、台球、桌上足球等。免费的早餐、饮料、水果吃得很happy。不过食堂确实有些小贵啊。
4 后记
办完了Check out手续,交上门卡那一瞬间还是有点不舍。Mentor送我的话是:祝贺你快要正式踏上社会!
1 面试
经过朋友的内推,首先接到电话面试的通知,第一次电话面试,可能也被公司的名气所震慑,感觉很紧张。面试经历了一个小时,基本上全是算法。最后一个算法磕磕碰碰,在面试官的提示下,算是得出了结果。忐忑等了一个星期,得到去公司面试的通知,全程三个小时,三个面试官,都是算法,并且直接在白板上写Code。拿到了实习的offer,实习三个月后,公司安排了正式员工的面试,整个流程差不多,面试过程都是算法并写Code。最后一面是级别比较高的Manager,首先要英文做自我介绍,我顿时就懵了,因为前面所有的面试都是中文,措手不及啊,结结巴巴没有说出几句来。然后就是聊聊实习项目和体验,自己的优缺点,为什么想来这里等一些常规的问题。因为前面形成了思维定式,以为会全是算法,想不到最后一面会这么“文艺”,完全没有准备,自认为表现非常的不好,但是很庆幸最后得到了offer。
MS面试算法算法是王道,准备算法好算法,而且要注意和面试官交流。面试官并不是要看到你会多少算法,还有很重要的是你解决问题的能力,遇到难题,能不能积极思考,并得出解决方案。算法固然重要,但是也要准备常规的面试问题,例如英文自我介绍(外企必备的),自己的优缺点等。我个人很认同MS的面试方式,算法为主,也不会有太难的算法,面试官都很nice,会引导你解决问题。
2 工作
公司上下班的时间非常灵活,没有固定上下班时间,因为公司以结果为导向,只要能够完成任务就可以。大家上下班的时间都比较灵活,Mentor和Manager也不管你什么时候到。实习生请假也比较容易。这是我最喜欢的地方之一。
原则上,MS对实习生有很完善的培养计划和目标,因为从实习生Review和One-One制度上都可以感受到,虽然执行的时候可能会有些偏差。公司的开发工具完全是使用自己的一套,有些并没有对外发布,所以有时候出了问题,搜索都困难。有太多的工具,在我四个月的实习时间里面,很多东西都没有搞清楚。
让我非常惊讶的是公司的办公系统。Email、会议、IM、远程协作都是原来可以整合的如此完善和方便。工作上交流都是英文,自己的Writing skill可能有些进步,但是很遗憾的是,在这段时间里面,并没有联系自己的口语。
3 生活
必须说的是公司的福利确实非常好。可以玩的东西确实很多,乒乓球、台球、桌上足球等。免费的早餐、饮料、水果吃得很happy。不过食堂确实有些小贵啊。
4 后记
办完了Check out手续,交上门卡那一瞬间还是有点不舍。Mentor送我的话是:祝贺你快要正式踏上社会!
订阅:
博文 (Atom)
