最近由於需求問題,需要寫乙個列表。以前總是使用listview,從來沒有用過recyclerview。所以這次打算嘗試一下。然後就開始動手幹活了。recyclerview布局寫好了。然後寫adapter,一切正常。
recyclerview.additemdecoration(new divideritemdecoration(context,divideritemdecoration.vertical));
接下來,你需要在res目錄下drawable的資料夾裡面新建乙個divider.xml檔案。名字你可以按你自己的喜好來設定。
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:shape="rectangle">
android:color="@color/gray"/>
android:height="0.1dp"/>
shape>
我這裡gray是#d0d0d0,大家也可以自己修改。
再然後,你需要在values資料夾裡面的styles檔案裡面新增這樣一行**。
name="android:listdivider">@drawable/divideritem>
好,寫到這裡。大功告成。先執行一下看看效果。
嗯?突然發現最後一行資料的下面也有分割線,這樣不太美觀。接下來我們繼續修改。
聰明的小夥伴可能已經知道怎麼修改了。答案就是前面提到的divideritemdecoration這個類。我們進去看看。
public
class
divideritemdecoration
extends
recyclerview.itemdecoration ;
private drawable mdivider;
/*** current orientation. either or .
*/private
int morientation;
private
final rect mbounds = new rect();
/*** creates a divider that can be used with a
* .*
*@param context current context, it will be used to access resources.
*@param orientation divider orientation. should be or .
*/public
divideritemdecoration(context context, int orientation)
/*** sets the orientation for this divider. this should be called if
* changes orientation.
**@param orientation or
*/public
void
setorientation(int orientation)
morientation = orientation;
}/**
* sets the for this divider.
**@param drawable drawable that should be used as a divider.
*/public
void
setdrawable(@nonnull drawable drawable)
mdivider = drawable;
}@override
public
void
ondraw(canvas c, recyclerview parent, recyclerview.state state)
if (morientation == vertical) else
}@suppresslint("newapi")
private
void
drawvertical(canvas canvas, recyclerview parent) else
final
int childcount = parent.getchildcount();
for (int i = 0; i < childcount; i++)
canvas.restore();
}@suppresslint("newapi")
private
void
drawhorizontal(canvas canvas, recyclerview parent) else
final
int childcount = parent.getchildcount();
for (int i = 0; i < childcount; i++)
canvas.restore();
}@override
public
void
getitemoffsets(rect outrect, view view, recyclerview parent,
recyclerview.state state) else }}
裡面有這樣乙個方法drawvertical,沒錯它就是在這個方法裡面迴圈的繪製每一條分割線的。所以我們只需要將for迴圈裡面的i
為recyclerview新增懸浮view
recyclerview中列表一般使用linearlayoutmanage,其中linearlayoutmanage有方法findviewbyposition position 和findfirstvisibleitemposition,他可以分別用來獲取你指定position的view和第乙個顯示...
為RecyclerView新增分割線
由於recyclerview並沒有支援divider這樣的屬性,所以就需要我們自己去實現。這裡主要實現第二種 建立類繼承及recyclerview.itemdecoration public class myitemdecoration extends recyclerview.itemdecora...
給RecyclerView新增頭部
最近開發的時候遇到乙個問題,就是scrollview巢狀recyclerview的時候,在高版本的的手機上執行的時候整個頁面是可以正常滾動的,但是在低版本手機上執行的時候recyclerview以上的內容就不會顯示出來了,整個頁面只有recyclerview,並且充滿了整個螢幕,recyclervi...