GridLayout 居中显示
如果大家有使用过GridLayout来给RecyclerView使用,会发现其实是没有居中的,而官方也没有给出居中的方法,这里就讲讲如何让其居中。
原理
要做的这一点其实很简单,只要我们自己计算每一个item的宽度即可。例如三列的结构,如果在宽度较小的情况下,会靠在左边显示,导致不居中,我们也不可能自己对着屏幕测量然后在xml中设置合适的宽度,这些工作应该由代码来为我们完成。由代码计算出合适的宽度值,然后赋予我们的item,这样item的宽度相同并且平分了屏幕就完成了居中的效果。
设置item宽度
看了上面的原理,所以实现居中有两个操作,第一个是我们能够设置item的宽度,第二个是计算item的宽度。我们先来进行设置宽度的代码编写。
对于item的管理,我们都知道是适配器完成的,所以对于宽度的管理我们也是在适配器中实现的。在设配器中定义一个私有变量 mItemWidth
,用于保存item的宽度,当我们计算完item的宽度后,来保存在这个变量中。对于一个item的宽度改变应该怎么做?很显然,是使用LayoutParams来动态改变item的宽度。那应该在哪修改呢?对适配器熟悉的同学,应该就会马上意识到在 onCreateViewHolder
这一函数中修改即可。
public void