在开发的过程中用到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 问题解决!