国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

RecyclerView底部分割線去除的方法

2019-12-12 03:10:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

概述

之前我們拋出了一個(gè)問(wèn)題就是RecyclerView在顯示列表的時(shí)候,最底部也就是最后一個(gè)Item后面還有分割線,這大大影響界面的美觀。這篇文章就是解決這個(gè)問(wèn)題的。

自定義分割線

通過(guò)分析源碼后我們發(fā)現(xiàn)沒(méi)有相關(guān)的方法來(lái)處理這一需求,所以只能自定義分割線,通過(guò)上一篇文章的基礎(chǔ)我們知道肯定是修改getItemOffsets。那我們的思路是讓這個(gè)方法在到最后一個(gè)條目時(shí),不偏移分割線的間隙。同時(shí)也要修改onDraw方法,讓他不再繪制最后一條分割線。

private void drawHorizontal(Canvas c, RecyclerView parent, State state) { int childCount = parent.getChildCount() - 1; int left = 0; int top = parent.getPaddingTop(); int right = 0; int bottom = parent.getHeight() - parent.getPaddingBottom(); for (int i = 0; i < childCount; i++) { View view = parent.getChildAt(i); RecyclerView.LayoutParams params = (LayoutParams) view.getLayoutParams(); //考慮,padding left = view.getRight(); right = left + divider.getIntrinsicHeight(); //我們?cè)谧远xdrawable的是是,寫(xiě)死了高度,所以只能用高度 divider.setBounds(left, top, right, bottom); divider.draw(c); }}/** * 思路:就是獲取每個(gè)item,計(jì)算divider的left,top,right,bottom */private void drawVertical(Canvas c, RecyclerView parent, State state) { int childCount = parent.getChildCount() - 1; int left = parent.getPaddingLeft(); int top = 0; int right = parent.getWidth() - parent.getPaddingRight(); //考慮右邊的padding int bottom = 0; for (int i = 0; i < childCount; i++) { //不繪制最后一個(gè)條目的分割線 View view = parent.getChildAt(i); RecyclerView.LayoutParams params = (LayoutParams) view.getLayoutParams(); //考慮,padding top = view.getBottom() + params.topMargin; //就是當(dāng)前view底部到頂部的距離 bottom = top + divider.getIntrinsicHeight() - params.bottomMargin; //就是top+divider高度 divider.setBounds(left, top, right, bottom); divider.draw(c); }}@Overridepublic void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) { int childAdapterPosition = parent.getChildAdapterPosition(view); int lastCount = parent.getAdapter().getItemCount() - 1; //如果當(dāng)前條目與是最后一個(gè)條目,就不設(shè)置divider padding if (childAdapterPosition == lastCount) { outRect.set(0, 0, 0, 0); return; } Log.d("TAG", childAdapterPosition + "," + lastCount); if (orientation == LinearLayoutCompat.HORIZONTAL) { outRect.set(0, 0, divider.getIntrinsicHeight(), 0); //0,0,30,0,設(shè)置寬度 } else { outRect.set(0, 0, 0, divider.getIntrinsicHeight()); //0,0,0,30,設(shè)置高度 }}

使用這個(gè)自定義分割線的效果圖如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广元市| 兴文县| 宁南县| 舞钢市| 遵义市| 垫江县| 仪征市| 崇信县| 弋阳县| 门头沟区| 柘城县| 台中市| 常州市| 宿松县| 姚安县| 白沙| 黔东| 香格里拉县| 南涧| 永新县| 额济纳旗| 永济市| 苍梧县| 神池县| 廊坊市| 海南省| 英山县| 陇川县| 乌什县| 商洛市| 龙泉市| 长武县| 会东县| 萨迦县| 延边| 九龙县| 岳阳县| 墨江| 贵溪市| 东乡族自治县| 双辽市|