最近做的練手的小項目中存在一個橫向滑動的問題,需要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的代碼,想了解的朋友們可以過去圍觀一下: