如图:
传统的GradView无法直接实现,为什么说是无法直接实现呢?也就是说还是可以实现的。
实现方式就是把list变换一下,实现方式如下:
private String[] wordArr = new String[]{"地毯", "公里", "唇", "双生儿", "狗窝", "剃刀", "橙", "允许", "香水", "发刷", "河马", "战舰", "跑步者", "坚果", "游艇", "风格", "省略", "意思", "小猫", "羽毛",
"报纸", "知道", "鲍鱼", "套头毛衣", "恐龙", "伞", "梯子", "退休", "石英", "衣领", "项链", "吸收", "车库", "誓约", "格子饼", "拉链", "头痛", "虹膜", "失业", "雨雪",
"斑马", "手表", "飞机", "教练", "文具", "坐浴盆", "工作", "羊毛", "组织", "录像", "苹果", "雨", "须", "婴儿", "骑师", "鼓槌", "鼓", "编辑", "资格", "行政人员",
"报纸", "知道", "鲍鱼", "套头毛衣", "恐龙", "伞", "梯子", "退休", "石英", "衣领", "项链", "吸收", "车库", "誓约", "格子饼", "拉链", "头痛", "虹膜", "失业", "雨雪",
"开始", "维他命", "股东", "面包店", "大自然", "股东", "梯子", "退休", "石英", "衣领", "项链", "吸收", "车库", "誓约", "格子饼", "拉链", "头痛", "虹膜", "失业", "雨雪",};
public int rows = 20;//每列20个数据
public static int line = 5;//每行词语的个数
public String[] wordEntities;//变换之后的数组
每一列20个。
数据变换,就是重新new 一个数组,把之前wordArr的第21(下标为20)个放到第二个去,第41(下标为40)个,放到第三个去。
public void parseData() {
wordEntities = new String[rows *(wordArr.length/rows)];
for (int i = 0; i < wordArr.length; i++) {
int index = rows*(i%line)+(i/line)+1
wordEntities[i] = wordArr[index];
}
}
这样数据就OK了,接下来GradView的adater实现还是照样,这里就不写了。
第二种方式,5.0出了个RecycleView,这是个好东西啊,用RecycleView就没有这么多的麻烦事了,直接可以实现。
GridLayoutManager manager = new GridLayoutManager(getActivity(), 20);//每列20个数据
manager.setOrientation(GridLayoutManager.HORIZONTAL);
wordRv.setLayoutManager(manager);
//水平按列展开
其它的带码就略过了。