使GridView可以单行横向滑动
最近做的练手的小项目中存在一个横向滑动的问题,需要HorizontalScroll中嵌套GridView,但是GridView默认是竖直排放的item,况且HorizontalScroll与GridView都属于存在滚动条的控件,所以会有一些冲突问题,这里上网搜索了一下,发现了一个较为简单的解决办法,就是在java代码中动态的设置GridView的numColumns属性、每项Item的宽度和GridView的总宽度。将numColumns设置为与list集合的长度一致,下面贴出关键代码:
1 int length = 150; //定义一个长度 2 int size = groupBuyList.size(); //得到集合长度 3 //获得屏幕分辨路 4 DisplayMetrics dm = new DisplayMetrics(); 5 getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); 6 float density = dm.density; 7 // Log.d(TAG, "handleMessage: "+density); 8 int gridviewWidth = (int) (size * (length + 10) * density); 9 int itemWidth = (int) (length * density); 10 11 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 12 gridviewWidth, LinearLayout.LayoutParams.MATCH_PARENT); 13 myGirdView.setLayoutParams(params); // 设置GirdView布局参数,横向布局的关键 14 myGirdView.setColumnWidth(itemWidth); // 设置列表项宽 15 myGirdView.setHorizontalSpacing(15); // 设置列表项水平间距 16 myGirdView.setStretchMode(GridView.NO_STRETCH); 17 myGirdView.setNumColumns(size); // 设置列数量=列表集合数
效果如下所示:
下面这两篇比较相似的博文都有简单的完整的代码,不过只是一个演示Demo的代码,想了解的朋友们可以过去围观一下: