1. 程式人生 > >XRecyclerView分割線多了一個的問題

XRecyclerView分割線多了一個的問題

之前在使用XRecyclerView的實現下拉重新整理,上拉載入更多的時候,當資料量較少的時候,最下面一行的資料的分割線多了一個,很是鬱悶。如下圖
這裡寫圖片描述
後來看了分割線的原始碼,發現由於新增分割線的時候把XRecyclerView的footerview也算成了一個childView,所以多添加了一個。所以解決辦法是在分割線類RecyclerViewDivider計算childView的個數完成後減一就行了

    final int childSize = parent.getChildCount()-1;

以下是萬能分割線修改之後的全部程式碼

public class RecyclerViewDivider
extends RecyclerView.ItemDecoration {
private Paint mPaint; private Drawable mDivider; private int mDividerHeight = 2;//分割線高度,預設為1px private int mOrientation;//列表的方向:LinearLayoutManager.VERTICAL或LinearLayoutManager.HORIZONTAL private static final int[] ATTRS = new
int[]{android.R.attr.listDivider}; /** * 預設分割線:高度為2px,顏色為灰色 * * @param context * @param orientation 列表方向 */ public RecyclerViewDivider(Context context, int orientation) { if (orientation != LinearLayoutManager.VERTICAL && orientation != LinearLayoutManager.HORIZONTAL) { throw
new IllegalArgumentException("請輸入正確的引數!"); } mOrientation = orientation; final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); a.recycle(); } /** * 自定義分割線 * * @param context * @param orientation 列表方向 * @param drawableId 分割線圖片 */ public RecyclerViewDivider(Context context, int orientation, int drawableId) { this(context, orientation); mDivider = ContextCompat.getDrawable(context, drawableId); mDividerHeight = mDivider.getIntrinsicHeight(); } /** * 自定義分割線 * * @param context * @param orientation 列表方向 * @param dividerHeight 分割線高度 * @param dividerColor 分割線顏色 */ public RecyclerViewDivider(Context context, int orientation, int dividerHeight, int dividerColor) { this(context, orientation); mDividerHeight = dividerHeight; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(dividerColor); mPaint.setStyle(Paint.Style.FILL); } //獲取分割線尺寸 @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); outRect.set(0, 0, 0, mDividerHeight); } //繪製分割線 @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); if (mOrientation == LinearLayoutManager.VERTICAL) { drawVertical(c, parent); } else { drawHorizontal(c, parent); } } //繪製橫向 item 分割線 private void drawHorizontal(Canvas canvas, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getMeasuredWidth() - parent.getPaddingRight(); final int childSize = parent.getChildCount()-1; for (int i = 0; i < childSize; i++) { final View child = parent.getChildAt(i); RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); final int top = child.getBottom() + layoutParams.bottomMargin; final int bottom = top + mDividerHeight; if (mDivider != null) { mDivider.setBounds(left, top, right, bottom); mDivider.draw(canvas); } if (mPaint != null) { canvas.drawRect(left, top, right, bottom, mPaint); } } } //繪製縱向 item 分割線 private void drawVertical(Canvas canvas, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getMeasuredHeight() - parent.getPaddingBottom(); final int childSize = parent.getChildCount()-1; for (int i = 0; i < childSize; i++) { final View child = parent.getChildAt(i); RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams(); final int left = child.getRight() + layoutParams.rightMargin; final int right = left + mDividerHeight; if (mDivider != null) { mDivider.setBounds(left, top, right, bottom); mDivider.draw(canvas); } if (mPaint != null) { canvas.drawRect(left, top, right, bottom, mPaint); } } } }

相關推薦

XRecyclerView割線一個的問題

之前在使用XRecyclerView的實現下拉重新整理,上拉載入更多的時候,當資料量較少的時候,最下面一行的資料的分割線多了一個,很是鬱悶。如下圖 後來看了分割線的原始碼,發現由於新增分割線的時候把XRecyclerView的footerview也算成了一

想做大神泡妹嗎!看看你又一個

系統 大學泡妹 網絡 VMware Workstation 虛擬化 這個就是vm虛擬機的全稱。1.打開軟件2.選擇創建新的虛擬機,進入如下界面這裏有兩種選擇方式;典型比較簡單,自定義就比較復雜一些。下面我們就選簡單快速的典型吧!第二種大家可以有空自己嘗試。3.這三種模式,光盤已經幾乎不用了

C#序列化實體成XML後一個問號

非法字符 express 就是 錯誤 技術 system text alt ace 在調試時,程序報如下錯誤 原因是在C#序列化實體成XML後,前面多了一個問號,如圖所示: 導致該XML格式不是正確的XML格式,所以程序報錯。 解決辦法就是加入一段代碼,隱藏掉XML開頭

sed替換文件後出現文件裏一個 ^M

vpd watermark log vim 文件 fff ESS -i dos 替換命令sed -i (用/c 進行整行替換): 解決方法:yum -y install dos2unixdos2unix db.conf然後vim進去發現沒有 ^M了sed替換文件後出現文件

無處不在的雲端計算又一個兄弟——霧計算

現在正在流行的“雲端計算”,是把大量資料放到“雲”裡去計算或儲存。這樣,就解決了目前電腦或手機儲存量不夠,或者是運算速度不夠快的問題,當然也帶來了其他很多好處。 這個所謂的“雲”的核心,就是裝了大量伺服器和儲存器的“資料中心”。由於目前的半導體晶片和其他配套硬體還很耗電,全球資料中心的用電功

2019 我的世界一個 Python

        大一時學過 C語言,大三時用 C 控制微控制器,之後就沒有別的和程式設計的交集了。         大約十天前下定決心學 Python,不開玩笑,版本我

Eclipse換行莫名其妙一個右花括號(Eclipse最詭異的BUG)

先來看看截圖:(注:Eclipse版本是:Eclipse oxygen 1a)很神奇是不?莫名奇妙多了一個右花括號,而且更神奇的是根據搜尋得到的解決方法(如下)設定後是完全沒效果的??window〉preference〉java>Editor>typing>

Eclipse Git提交程式碼,一個“工程同名的資料夾”,找不到解決辦法!!!

提交程式碼到Git倉庫,有2種方式。第1種,先在OSChina等平臺建立git專案,本地clone,再在本地修改程式碼提交。√這種方式,沒任何問題。不過,我平時不喜歡這麼幹。第2種,本地已經有了專案,需要提交到git上。×分享程式碼到Git遠端倉庫的時候,本地首先需要建立本地

Spring Security 4 退出後再登入,頁面停留在登入頁,Url卻一個Logout引數

spring security 4 的logout問題 今天在整合spring-boot 和 spring-security的時候,出現瞭如下的怪象: 配置好了基本的登入和身份驗證(自定義了一個簡單的UserDetailsService),springboo

解決input框獲取焦點時改變input邊框的顏色,在谷歌瀏覽器中input框獲取焦點時,input框一個帶顏色的邊框

1、問題頁面顯示效果 2、解決辦法,在input獲取焦點的樣式中加入outline:none;或outline-width:0; input[type=text]:focus, select:focus{ border:1px solid #3879d9; out

資料庫讀取時間欄位後面一個".0"問題的解決辦法

今天寫自己的部落格網站遇到一個問題:就是從資料庫讀取的時間顯示在網頁上是下面這種,多了一個”.0” 但是我分明已經寫了時間格式: //獲取評論時間 public String commenttime() { SimpleDa

XP因為一個使用者“ASP.NETMachineA...”而出現登入視窗

如果系統是win xp,安裝了微軟的.net Freamwork的早期版本,也會有這個帳戶,可以到網上下載 .NET Freamwork SP1 進行升級,升級後就沒有了,不過帶著也沒什麼問題,因為這是個受限帳戶.反正就是更新的原因才出現的 不要刪除這個使用者,如果不

Menu菜單屬性添加割線與隱藏余的割線

ref archive arc 手動 鏈接 tomat mage logs pan MyMenu.AutoLineReduction := maAutomatic; {默認會自動隱藏多余的分割線} //MyMenu.AutoLineReduction := maM

CS61b lab3 分享一個bug,足足找一個小時,希望各位別入坑哈

好的 log http 錯誤代碼 style obj item next slist part1: 寫一個測試程序,比較簡單就不貼代碼啦,運行結果: part2: 改進InserEnd method,我是按照課上講的把原來的singlyList變成doubleList,在

python采用 進程/線程/協程 寫爬蟲以及性能對比,牛逼的分鐘就將一個網站爬下來!

分配 返回 afa 一個 同方 except erer 簡單 direct 首先我們來了解下python中的進程,線程以及協程! 從計算機硬件角度: 計算機的核心是CPU,承擔了所有的計算任務。一個CPU,在一個時間切片裏只能運行一個程序。 從操作系統的角度: 進程

就因為用寫一個自助提卡系統!居然一個月掙的比一年!勿商用

信息 其中 技術 .com 查詢 api map lmap 過多 相關環境 源碼信息:你猜啊 漏洞類型:Forwarded-For註入 搭建成功之後如下 : 看到如下頁面是不是有似曾相識的感受: 進群:125240963 即可獲取數十套PDF哦! 上圖是安

近期處理個Highcharts圖標時,碰到重復操作,所以編寫一個流程控制器

null sql 控制 lin end created 格式 har 合並數組 HTML選擇頁面 第一部分:<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/9/8 * Tim

一個NumPy模組就要學這麼?師傅發兩個月就整理一個模組資料

  一、NumPy簡介 其官網是: http://www.numpy.org/ NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。Numpy內部解除了Python的GIL(全域性直譯器鎖),執

c# 個字串做分隔符, 雖然可以用正則做分隔符, 但是遇到特殊符號還真不好寫.自己寫一個.

[TestMethod] public void TestMethod2() { string str = "aaa|||bbb|||ccc"; var rr= MySplit(str, "|

實習一個月!師傅終於教我案例!分散式爬蟲!這是我的筆記

  要抓微博資料,第一步便是模擬登陸,因為很多資訊(比如使用者資訊,使用者主頁微博資料翻頁等各種翻頁)都需要在登入狀態下才能檢視 這裡我簡單說一下,做爬蟲的同學不要老想著用什麼機器學習的方法去識別複雜驗證碼,真的難度非常大,這應該也不是一個爬蟲工程師的工作重點,當然這只是我的