您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關使用RecyclerView時如何去除底部的分割線,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
自定義分割線
通過分析源碼后我們發現沒有相關的方法來處理這一需求,所以只能自定義分割線,通過上一篇文章的基礎我們知道肯定是修改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); } } @Override public 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時如何去除底部的分割線,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。