Android计算文本宽度的坑

想实现自动缩放字体大小的功能,无论用第三方的控件还是AppCompatTextView都遇到一个问题:在滚动列表视图中显示有问题,在滚动过程中,明明有更大空间却用了一个小字体。没有时间细查实现,想着很简单就造个轮子。

read more

RecyclerView区分视图类型的Divider

我们都知道support库有一个DividerItemDecoration, 可以作为Item之间的分隔线(divider)。但它作用以后所有的item之间都会有这个分隔线,实际情况往往是:recyclerView中存在多种的视图类型(viewType), 我们只是需要在某一类型的视图后添加分隔线。

read more

重用LayoutManager

在RecyclerView嵌套RecyclerView的情况中,里层RecyclerView(Secondary RecyclerView)所在的ViewHolder将会与数据进行绑定,它当然需要设置一个LayoutManager。然而在onBindViewHolder方法中创建LayoutManger实例毕竟不太好,每次调用onBindViewHolder都有实例生成容易产生内存碎片。于是每个数据Item去持有一个LayoutManger实例是自然而然的。但是问题来了:

read more

TextView多行文本Ellipsize的终极解决方案

Android的TextView提供了ellipse的功能,就是在文本超过指定行数maxLine后增加...,然而当setText传入是spannable类型的时候,这个功能无法生效。spannable中会包含不少信息,图片,下划线等等,给解决这个问题又增加了不少难度。微信朋友圈的"全文/收起"根本没加...。网上有很多人试图解决这个问题,有重写类的,例如 https://stackoverflow.com/a/6763689, 有添加布局监听的,如 https://stackoverflow.com/a/30446822, 但实践下来没一个好用的!只好自己想法。

read more

GestureDetector无法取消长按

期望对RecyclerView中的item可以做单击, 长按, 和拖拽操作, 利用OnItemTouchListener可以达到一个在外部总控的目的。一般的对Item的操作都是在Item内部定义一个OnClickListener,如果Item的点击之类的操作与外部无关并且Item内部状态各不相同, 那这样做是最好的,但如果需要和外部关联并且这些操作不会对个别的Item另作处理,这样做就有些不足,通常这样的操作是各个Item持有同一个操作实例, 这就是所谓“外部总控”。

read more

Fedora轻松安装与配置

主要是用来做点记录,长点记性,不然每次都从头开始安装的时候都忘记一些小点,结果把整个过程拖的老长,浪费了不少时间。

read more

dark
sans