RecyclerView 新增自定義分割線

2022-01-19 23:08:11 字數 3302 閱讀 5569

預設的淺灰色的分割線在某些時候並不能滿足我們的要求,這時就需要自定義分割線了。

我們可以通過兩種方式來實現:呼叫 divideritemdecoration.setdrawable 方法或者繼承實現 recyclerview.itemdecoration 類來實現。

實現分割線只需要呼叫setdrawable(@nonnull drawable drawable)

方法,然後傳入乙個drawable函式物件就可以了。

現在可以用shape來編寫乙個分割線樣式:

xml version="1.0" encoding="utf-8"

?>

<

shape

xmlns:android

=""android:shape

="rectangle"

>

<

gradient

android:centercolor

="#ff00ff00"

//綠色

android:endcolor

="#ff0000ff"

//藍色

android:startcolor

="#ffff0000"

//紅色

android:type

="linear"

/>

<

size

android:height

="3dp"

/>

shape

>

新增分割線的**改為如下:

//

新增自定義分割線

divideritemdecoration divider = new divideritemdecoration(this

,divideritemdecoration.vertical);

divider.setdrawable(contextcompat.getdrawable(

this

,r.drawable.custom_divider));

recyclerview.additemdecoration(divider);

執行起來之後,就可以看到一條多彩的分割線了:

這塊就不多贅述了,直接貼**:

public

class recyclerviewdivider extends

recyclerview.itemdecoration;

/***

* 預設分割線:高度為2px,顏色為灰色

* 獲取屬性值,**

@param

context

* @param

orientation 列表方向

*/public recyclerviewdivider(context context, int

orientation)

morientation =orientation;

final typedarray array =context.obtainstyledattributes(attrs);

mdivider = array.getdrawable(0);

array.recycle();

mdividerheight =mdivider.getintrinsicheight();

}/*** 自定義分割線**

@param

context

* @param

orientation 列表方向

* @param

drawableid 分割線

*/public recyclerviewdivider(context context, int orientation, int

drawableid)

morientation =orientation;

mdivider =contextcompat.getdrawable(context, drawableid);

mdividerheight =mdivider.getintrinsicheight();

}/*** 自定義分割線**

@param

context

* @param

orientation 列表方向

* @param

dividerheight 分割線高度

* @param

dividercolor 分割線顏色

*/public recyclerviewdivider(context context, int orientation, int dividerheight, int

dividercolor)

morientation =orientation;

mdividerheight =dividerheight;

mpaint = new

paint(paint.anti_alias_flag);

mpaint.setcolor(dividercolor);

mpaint.setstyle(paint.style.fill);

}//獲取分割線尺寸

@override

public

void

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

else

outrect.set(0, 0, 0, mdividerheight);

}@override

public

void

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

else

}//為橫方向item, 畫分割線

private

void

drawhorizontalline(canvas canvas, recyclerview parent)

if (mpaint != null

) }

}//為豎方向item, 畫分割線

private

void

drawverticalline(canvas canvas, recyclerview parent)

if (mpaint != null

) }}}

給RecyclerView新增頭部

最近開發的時候遇到乙個問題,就是scrollview巢狀recyclerview的時候,在高版本的的手機上執行的時候整個頁面是可以正常滾動的,但是在低版本手機上執行的時候recyclerview以上的內容就不會顯示出來了,整個頁面只有recyclerview,並且充滿了整個螢幕,recyclervi...

recyclerview新增item間距

import android.graphics.rect import android.support.v7.widget.recyclerview import android.view.view public class spaceitemdecoration extends recyclerv...

為recyclerview新增懸浮view

recyclerview中列表一般使用linearlayoutmanage,其中linearlayoutmanage有方法findviewbyposition position 和findfirstvisibleitemposition,他可以分別用來獲取你指定position的view和第乙個顯示...