RecyclerView+GridLayoutManager展示時,間距問題~!

  在開發的過程中用到RecyclerView+GridLayoutManager的展示樣式,但是怎麼也調整不對左右的間距,後來網上找了下結果解決如下:

recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.top = convertDpToPixel(7);
        outRect.bottom = 0;
// top bottom left right 對應的值應該是dpi 而不是dp  dpi根據不同手機而不同 

        int i = parent.getChildLayoutPosition(view) % 3;//每行3個
        switch (i) {
            case 0://第一個
                outRect.left = convertDpToPixel(15);
                outRect.right = convertDpToPixel(0);
                break;
            case 1://第二個
                outRect.left = convertDpToPixel(7);
                outRect.right = convertDpToPixel(0);
                break;
            case 2://第三個
                outRect.left = convertDpToPixel(7);
                outRect.right = convertDpToPixel(15);
                break;
        }
    }
});

注意: dpi 是會根據手機的不同而變化的  所以 要動態的計算的。計算方法如下:
private int convertDpToPixel(int dp) {
    DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics();
    return (int) (dp * displayMetrics.density);
}
OK 問題解決!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章