RecyclerView 滚动定位至目标 Item 并对齐顶部

关于使用LinearLayoutManager的RecyclerView需要滚动定位到指定Item,基于之前对ListView的使用,我们很容易就从RecyclerView中找到这样的方法。

scrollToPosition(int position)

smoothScrollToPosition(int position)

但是使用过的同学都会发现它存在着这么一个问题:当你要定位的Item已经完全显示时,RecyclerView并不会产生滚动行为;当你要定位的Item并不完全显示或在显示区域以外时,RecyclerView虽然会产生滚动行为,但是只要Item完全显示后滚动行为就会停止,即Item有可能会在RecyclerView显示区域的顶部,也有可能在显示区域的底部。

这样一来,面对“需要滚动定位到Item时,Item对齐到顶部”的需求,就很尴尬了。 😯

这尴尬事刚好我前几天就碰上了,在网上一搜发现很多文章介绍的方法都是想方设法地计算目标Item离当前位置的距离,用上了scrollBy(int x, int y)smoothScrollBy(int dx, int dy),还要监听下滚动事件作最后的修正处理什么的。

我也确实按这些个方法试了下,最终效果不佳,尤其是我的每一个Item的高度是不固定的,甚至会出现Item高度大于RecyclerView高度的情况,也就是RecyclerView的显示区不能完全展示这个Item。所以还是自己动手丰衣足食啊~~ :mrgreen: Demo扔在最后~~ 继续阅读“RecyclerView 滚动定位至目标 Item 并对齐顶部”

[Typecho插件] Smilies 1.1.0

Smilies 1.1.0

  • 在后台编辑文章或独立页面时,编辑页面右侧增加表情贴图;
  • 前端展示文章或独立页面时,解析表情贴图;
  • 修复插件配置页的交互Bug。

Smilies这个插件原本是给原生的评论系统增加表情贴图功能之用的,在我使用Typecho的时候拿到的是羽中的Smilies 1.0.7版本。这个新版的Smilies插件在Typecho 1.0上也能运行,所以刚一拿到的时候我就立马给换上了Hangouts的表情,用了起来。

因为用着不错,所以我也给Babycong的博客用上了这个插件……

然后,随之而来的就是Babycong对表情功能更进一步的需求——在文章里发表情!哈哈,不想码字的懒人啊,这就是所谓的「字数不够,表情来凑」。 ➡

正因为有这个需求,所以在羽中的Smilies 1.0.7 上进行个性化的修改了。 😆

在后台的文章/独立页面的编辑页右侧选项中加入表情选择器。后台编辑页面

在前端的文章/独立页面中,对文章内容进行表情解析。前端展示页面

[Typecho插件] GravatarServer : 瞎鼓捣的Gravatar头像插件

GravatarServer 1.1.0 更新(2015/05/03):

  • 增加默认头像设置功能

其实一直以来都没有很care评论中Gravatar头像经常显示不出来这个问题,因为……

到现在为止都木有人在这里留下过评论~so sad ~既然木有评论,看也看不到,那就这样过吧……

但是BabyCong的博客不一样啊,至少我经常踩啊!看着评论前面,头像的位置打着X,顿时又有点不爽了……

Gravatar头像叉叉图

想想还是上网找解决办法吧(我真懒~~)。上网转了一圈(我真的很懒,转多几圈都没心思),发现与Typecho相关的资源不多啊,最后发现其实也就两种方法——缓存和替换Gravatar服务器。

对于我等穷X,空间何其珍贵,缓存?咔嚓!(有现成的插件都不敢用,哭~)

只能替换Gravatar服务器了。Typecho 1.0版默认用的是www.gravatar.com ,上网搜了一下,发现可以替换的服务器还真不少啊——cn.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com、3.gravatar.com还有多说的Gravatar镜像( gravatar.duoshuo.com )。马上测试一下,起码cn、3、和多说都是OK的,0、1、2不行,少说也有3个备选,不错不错,哈哈~

但是,尼玛居然没有现成的插件给我用!摔~摔~~摔~~~

虽然我不大懂PHP,对于Typecho而言我也只是个使用者而已,但是换个url string毕竟是没有技术含量的事,没有现成插件也不好做伸手党啊,看来还是自己动手吧!

直接动Typecho /var目录里的东西真心不好,虽然方便,但毕竟要考虑到以后的升级。顺便吐槽下——怎么Typecho还是1.0啊啊啊~
还是做成插件吧,刚好Widget_Abstract_Comments有gravatar这个接口,做完试试也还好使,就放出来吧。完全没有技术含量,代码都是照搬了/var/Widget/Abstract/Comments.php中的gravatar()和/var/Typecho/Common.php中的gravatarUrl()。

Gravatar头像棒棒哒

Excel中引用其他工作薄的数据

在统计工作中,往往需要从其他Excel工作薄中引用部分需要的数据,在当前工作薄中进行统计操作。

那么如何在当前工作薄中引用其他工作薄中的数据呢?这个问题,我今天也遇到了,于是决定把方法记录一下。


公式:=[XXX.xls]Sheet1!A1
描述:=[被引用工作薄文件名]被引用工作表!被引用数据所在单元格
前提:XXX.xls文件在打开的情况下,该引用公式才能引用到对应数据。


如果希望引用多个工作薄中的数据,可以对这些工作薄进行简单的批量重命名,例如重命名为"1 (1).xls"、"1 (2).xls"、"1 (3).xls"……

公式:=INDIRECT("[1 ("&A1&").xls]Sheet1!B1")
解析:使用了INDIRECT函数,如A1的值为“1”,则返回"[1 (1).xls]Sheet1!B1"。倘若A列从A1=1向下递增,则使用该公式时通过下拉可以实现对"1 (1).xls"、"1 (2).xls"、"1 (3).xls"等工作簿Sheet1工作表中B1单元格数值的批量引用。


当需要对未打开的Excel工作薄中的数据进行引用时则需要在公式中[被引用工作薄文件名]前加上文件的绝对路径。即:
公式:=X:/workspace/[XXX.xls]Sheet1!A1