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

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

RecyclerView底部分割線去除的方法

2019-10-23 18:32:20
字體:
供稿:網(wǎng)友

概述

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

自定義分割線

通過分析源碼后我們發(fā)現(xiàn)沒有相關的方法來處理這一需求,所以只能自定義分割線,通過上一篇文章的基礎我們知道肯定是修改getItemOffsets。那我們的思路是讓這個方法在到最后一個條目時,不偏移分割線的間隙。同時也要修改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(); //我們在自定義drawable的是是,寫死了高度,所以只能用高度 divider.setBounds(left, top, right, bottom); divider.draw(c); }}/** * 思路:就是獲取每個item,計算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++) { //不繪制最后一個條目的分割線 View view = parent.getChildAt(i); RecyclerView.LayoutParams params = (LayoutParams) view.getLayoutParams(); //考慮,padding top = view.getBottom() + params.topMargin; //就是當前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; //如果當前條目與是最后一個條目,就不設置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,設置寬度 } else { outRect.set(0, 0, 0, divider.getIntrinsicHeight()); //0,0,0,30,設置高度 }}

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

RecyclerView去除底部分割線,RecyclerView消除底部分割線,RecyclerView自定義分割線

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 容城县| 平江县| 海盐县| 综艺| 新宁县| 曲水县| 贵港市| 台中县| 芒康县| 叶城县| 突泉县| 额尔古纳市| 正蓝旗| 镇巴县| 新干县| 锡林浩特市| 潞城市| 毕节市| 克山县| 靖边县| 娄烦县| 扎兰屯市| 噶尔县| 太原市| 广饶县| 昌都县| 阿鲁科尔沁旗| 永靖县| 松滋市| 富顺县| 柞水县| SHOW| 元江| 松桃| 寿宁县| 揭阳市| 平邑县| 达拉特旗| 柳河县| 遂宁市| 泸西县|