title: Android: Adding a border and rounding to recyclerView items
body: <p>I have a recyclerView currently set up to add a drop shadow to the bottom of each item with spacing which works well. I want to add a thin gray border around each item as well as a soft rounding if possible. Code so far:</p>
  
  <pre><code>    public class VerticalSpaceItemDecorator extends RecyclerView.ItemDecoration {
  
      private final int verticalSpaceHeight;
  
      public VerticalSpaceItemDecorator(int verticalSpaceHeight) {
  
          this.verticalSpaceHeight = verticalSpaceHeight;
      }
  
      @Override
      public void getItemOffsets(Rect outRect,
                                 View view,
                                 RecyclerView parent,
                                 RecyclerView.State state) {
  
          // 1. Determine whether to add a spacing decorator
          if (parent.getChildAdapterPosition(view) != parent.getAdapter().getItemCount() - 1) {
  
              // 2. Set the bottom offset to the specified height
              outRect.bottom = verticalSpaceHeight;
          }
      }
  }
  
  public class ShadowVerticalSpaceItemDecorator extends RecyclerView.ItemDecoration {
  
      private Drawable divider;
  
      public ShadowVerticalSpaceItemDecorator(Context context) {
  
          // Use the default style divider
          final TypedArray styledAttributes = context.obtainStyledAttributes(
                  new int[] { android.R.attr.listDivider });
          this.divider = styledAttributes.getDrawable(0);
          styledAttributes.recycle();
      }
  
      public ShadowVerticalSpaceItemDecorator(Context context, int resId) {
  
          // Use a custom divider specified by a drawable
          this.divider = ContextCompat.getDrawable(context, resId);
      }
  
      @Override
      public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
  
          // 1. Get the parent (RecyclerView) padding
          int left = parent.getPaddingLeft();
          int right = parent.getWidth() - parent.getPaddingRight();
  
          // 2. Iterate items of the RecyclerView
          for (int childIdx = 0; childIdx &lt; parent.getChildCount(); childIdx++) {
  
              // 3. Get the item
              View item = parent.getChildAt(childIdx);
  
              // 4. Determine the item's top and bottom with the divider
              RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) item.getLayoutParams();
              int top = item.getBottom() + params.bottomMargin;
              int bottom = top + divider.getIntrinsicHeight();
  
              // 5. Set the divider's bounds
              this.divider.setBounds(left, top, right, bottom);
  
              // 6. Draw the divider
              this.divider.draw(c);
          }
      }
  }
  </code></pre>
  
  <p>Custom layout of recyclerView items:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"&gt;
  
  &lt;RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@android:color/white"
  android:orientation="vertical"&gt;
  &lt;ImageView
      android:id="@+id/imageView"
      android:layout_width="match_parent"
      android:layout_height="80dp"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentTop="true"
      android:paddingLeft="5dp"
      android:paddingRight="5dp"
  
      app:srcCompat="@mipmap/ic_launcher" /&gt;
  
  &lt;TextView
      android:id="@+id/textView_title"
      style="@style/AudioFileInfoOverlayText"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignStart="@+id/imageView"
      android:layout_gravity="left"
      android:paddingLeft="5dp"
      android:paddingRight="5dp"
      android:text="TextView"
      android:textColor="@android:color/white"
      android:textSize="22sp" /&gt;
  
  &lt;TextView
      android:id="@+id/textView_info"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignStart="@+id/textView_title"
      android:layout_below="@+id/imageView"
      android:layout_marginTop="12dp"
      android:paddingLeft="5dp"
      android:paddingRight="5dp"
      android:text="TextView" /&gt;
  
  &lt;Button
      android:id="@+id/button_one"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentEnd="true"
      android:layout_alignParentRight="true"
      android:layout_below="@+id/textView_info"
      android:layout_marginBottom="5pt"
      android:layout_marginRight="5pt"
      android:background="@drawable/circle_button"
      android:text="One"
      android:textColor="@android:color/white" /&gt;
  
  &lt;Button
      android:id="@+id/button_two"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/imageView"
      android:layout_below="@+id/textView_info"
      android:layout_marginBottom="5pt"
      android:layout_marginLeft="5pt"
      android:background="@drawable/circle_button"
      android:backgroundTint="?android:attr/colorControlHighlight"
      android:text="Two"
      android:textColor="@android:color/white" /&gt;
  &lt;/RelativeLayout&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>drop_shadow code:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle"&gt;
      &lt;size android:height="4dp" /&gt;
      &lt;solid android:color="@color/darkGray" /&gt;
      &lt;corners android:topLeftRadius="0dp" android:topRightRadius="0dp"
      android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp"/&gt;
  &lt;/shape&gt;
  </code></pre>
  
  <p>Border:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  </code></pre>
  
  <p>
      </p>
  
  <pre><code>&lt;stroke android:width="3dp"
      android:color="@color/gray"
      /&gt;
  
  &lt;padding android:left="1dp"
      android:top="1dp"
      android:right="1dp"
      android:bottom="1dp"
      /&gt;
  
  &lt;corners android:bottomRightRadius="7dp"
      android:bottomLeftRadius="7dp"
      android:topLeftRadius="7dp"
      android:topRightRadius="7dp"/&gt;
  </code></pre>
  
  <p></p>