RecycleView自定義分割線

2021-08-19 18:41:17 字數 2552 閱讀 2754

我們在使用listview的時候可以很輕鬆的設定列表的分割線,因為系統提供了我們外部呼叫介面。但是在使用recycleview是我們會發現並沒有直接設定分分割線的方面。不過我們可以自定義乙個baseitemdecoration繼承 recyclerview.itemdecoration,通過recycleview的additemdecoration(itemdecoration decor)方法進行設定。這裡我們主要來看一下 baseitemdecoration 的實現。

自定義 baseitemdecoration 類繼承自recyclerview.itemdecoration,重寫其中的 getitemoffsets 和 ondraw 方法。

在 getitemoffsets 方法中,我們針對itmview的四周邊距進行設定,預留出分割線的位置。

@override

public void getitemoffsets(rect outrect, view view, recyclerview parent, recyclerview.state state)

int lastposition = state.getitemcount() - 1;

int position = parent.getchildadapterposition(view);

switch (morientation)

outrect.set(left, top, right, bottom);

}

在 ondraw 中進行分割線的繪製,此處的繪製在itemview的繪製之前;也可再 ondrawover 中進行繪製,但分割線會覆蓋在itemview的布局只是。因此推薦使用 ondraw。

下面我們可以看下整個重寫的 baseitemdecoration

public class baseitemdecoration extends recyclerview.itemdecoration 

public baseitemdecoration isshowtopdivider(boolean isshowtopdivider)

public baseitemdecoration isshowbottomdivider(boolean isshowbottomdivider)

public baseitemdecoration isshowleftdivider(boolean isshowleftdivider)

public baseitemdecoration isshowrightdivider(boolean isshowrightdivider)

public void setorientation(recyclerview.layoutmanager layoutmanager)

} else if (layoutmanager instanceof linearlayoutmanager) }}

public void setdrawable(@nonnull drawable drawable)

mdivider = drawable;

}@override

public void ondraw(canvas c, recyclerview parent, recyclerview.state state)

}/**

* 當排布方式為線性布局的時候,繪製分割線的方法:

*/private void drawlinearitemdecoration(canvas canvas, recyclerview parent)

// 如果是水平排布,那麼分割線為豎線

} else if (morientation == linear_orientation_horizontal) }}

/*** 當排布方式為網格布局的時候,分割線的繪製方法:

*/private void drawgriditemdecoration(canvas canvas, recyclerview parent) }}

} else if (morientation == grid_orientation_horizontal) }}

}}

@override

public void getitemoffsets(rect outrect, view view, recyclerview parent, recyclerview.state state)

int lastposition = state.getitemcount() - 1;

int position = parent.getchildadapterposition(view);

switch (morientation)

outrect.set(left, top, right, bottom);

}}

此處針對該自定義類再做說明,其中的misshowtopdivider, misshowbottomdivider, misshowleftdivider, misshowrightdivider 均對應直觀意義上的上下左右,recyclerview 縱滑 則底部為bottom,橫滑則底部問right ,請自行腦補。

RecycleView自定義滾動條

簡陋了 哈哈 1 使用style屬性 2 3 scrollbar 4 scrollbar bg 參考 原創android man me 最後發布於2018 12 07 10 39 51 閱讀數 4529 收藏 展開 1,scrollbar 樣式設定 2,scrollbar 背景以及滾動條 長寬設定 ...

ObjectDataSource自定義分頁

objectdatasource是唯一支援自定義分頁的資料來源,要實現分頁效果,首先要將objectdatasource.enablepageing屬性設為true,通過三個屬性實現 startrowindex,maximumrows和selectcountmethod,效果如圖 實現分頁有兩種情況...

ObjectDataSource自定義分頁

objectdatasource是唯一支援自定義分頁的資料來源,要實現分頁效果,首先要將objectdatasource.enablepageing屬性設為true,通過三個屬性實現 startrowindex,maximumrows和selectcountmethod,效果如圖 實現分頁有兩種情況...