最終的效果如下:
上圖是我需求的一個頁面芭概,作為學習就直接貼出來了岔擂。
為了更好的使用網(wǎng)格布局位喂,所以決定使用RecyclerView來開發(fā)這需求。
首先:
為了更好地說明問題乱灵,連續(xù)發(fā)幾張截圖塑崖,并順截圖說明:
1:代碼設置全局截圖
因為要設計成網(wǎng)格樣式,所以使用GridLayoutManager痛倚,這里我只是空實現(xiàn)规婆,為了以后擴展使用,別沒有什么邏輯代碼蝉稳。這個GridLayoutManager我設置成了3列抒蚜。在98行代碼處理。
2:適配器代碼耘戚,紅框部分值得看的地方嗡髓。
3:上圖紅框部分26,27行代碼說明
目的是我這個頁面有兩種類型的item收津,所以定義兩個常量來區(qū)分饿这。請看下圖可知。
4:代碼流程機器跑一下撞秋。
跑起來之后是這個效果长捧。
5:解決
重點是需要畫分割線,繼續(xù)上圖吻贿。
也許看上去很亂串结,我會一點一點解釋。重點是getItemOffsets方法舅列,用來給item設置內部偏移量肌割。所以接下重點就是getItemOffsets方法。
6:添加分割線剧蹂。
此時添加上圖所寫的分割線對象声功。
7:跑起來
==================================解釋====================================
接下來還沒結束宠叼,這里最大的迷惑就是getItemOffsets方法中的操作先巴,所以接著上圖
1:效果圖對比
沒有設置分割線和設置分割線之后的效果其爵,一目了然。
2:應該做的
3:設置屬性
4:最初的效果圖
可以看到3個item的屬性值是這樣的伸蚯,我們需要做的就是把藍色框的寬度平均成4個等間距摩渺。
5:處理之后的效果圖
我們需要用getItemOffsets方法處理成這個樣子。如下圖藍色框是等間距剂邮,寬度是30.
6:最終計算設置操作
需要處理第一列摇幻,中間列,和最后一列挥萌,這里需要做區(qū)分绰姻,就是頭,中間引瀑,尾狂芋。
形參:outRect.set就是設置item所在列中的偏移值。
7:最后一圖
最后一圖說明了計算過程憨栽。
============================================================
以上是我對RecyclerView畫分割線的認識帜矾,有寫的不對的地方,望給予指教屑柔,不勝感激B庞!掸宛!