android item三种,Android RecyclerView中的ItemDecoration的几种绘制方法
如題,我們使用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);
我覺得第三種方式最好理解,不過如果你時間充裕,可以嘗試上邊兩種方式。
總結
以上是生活随笔為你收集整理的android item三种,Android RecyclerView中的ItemDecoration的几种绘制方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最早单机的计算机操作系统,川农《计算机操
- 下一篇: 计算机创新课,计算机教学课程模式与创新论