預設的淺灰色的分割線在某些時候並不能滿足我們的要求,這時就需要自定義分割線了。
我們可以通過兩種方式來實現:呼叫 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);
這塊就不多贅述了,直接貼**:
publicclass 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和第乙個顯示...