在開發的過程中用到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 問題解決!