如題击费,我們使用recyclerview的時候俏让,如果沒有設置顯示條目的margin,或者padding的話芭逝,是沒有分割線效果的塌碌。
那么除去使用margin或padding,其余的方法是用itemdecoration繪制分割線
我們繪制分割線的時候通常會使用drawable去繪制,那個drawable是怎么得到的呢旬盯?
方法1:參考了hongyang大神和李寧大牛的資料台妆,得知可以使用android自帶的屬性:android.R.attr.listDivider屬性可以獲得,那么獲得drawable的方法是:
首先獲得TypedArray對象胖翰,這個是存儲屬性的一個容器接剩,得到方法是
context.obtainStyledAttributes(int類型數組)
private int[]mDrawableId={android.R.attr.listDivider};
TypedArray ta = mContext.obtainStyledAttributes(mDrawableId);
然后,在從這個屬性容器中去得到對應得drawable
得到方法是:
Drawable mDrawable=ta.getDrawable(0);
然后再通過重寫ItemDecoration中的onDrawOver的方法去書寫你的分割線即可萨咳。
方法2:方法1是使用了android自帶的屬性和自帶的分割線drawable,那么我們有兩種方式去把自帶的這個分割線替換掉懊缺,比如
去我們的res---value----styles文件夾中,給自己的主題加上點內容培他,這個內容是這樣的
@drawable/listdivider
鹃两,現在styles是這樣的
@color/colorPrimary@color/colorPrimaryDark@color/colorAccent@drawable/listdivider
最后這行是我加的,意思是用我drawable下的自定義的listdivider替換了舀凛,android自己的那個俊扳。這樣,我們得到的drawable就是我定義好的這個drawable了猛遍。
方法很簡單馋记,但是由于我使用android原生的方法有點蒙圈,所以我又作死的自己重新寫了個style,是這樣的懊烤。
在style里面加了我寫的一個主題:
@drawable/listdivider
注意看 梯醒,主題名是hehe,不過還是繼承了AppCompat,不然會報錯的腌紧。然后item name是我隨便寫的:mylistdivider茸习,后邊做了引用,引用到了我的drawable圖片中去了壁肋。
不過光寫這逮光,不行,因為android本身是沒有mylistdivider屬性的墩划,所以還得去attrs里加這個屬性
這樣其實還不行,因為我這個"hehe"的style我的應用還沒有用嗡综,需要去清單文件中把主題改成我這個hehe的主題乙帮,在使用上方的
TypedArray 方法找到drawable,再進行繪制即可
方法3:
直接通過
Drawable mDrawable=mContext.getResources().getDrawable(R.drawable.listdivider);
不過這個方法在android api22的時候過時了
极景,但是可以用察净,新的替換的方法是
Drawable mDrawable=mContext.getResources().getDrawable(R.drawable.listdivider,null);
我覺得第三種方式最好理解驾茴,不過如果你時間充裕,可以嘗試上邊兩種方式氢卡。
我的原文地址:
http://blog.csdn.net/jerrywu145/article/details/51743563
謝謝锈至!