I am going to show you a simple implementation of an item decorator which fills the item and also draws a boarder.
Complete example can be found at https://github.com/trsquarelab/androidexamples/tree/master/RecycleViewExample
package com.example.recycleviewexample; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.support.v7.widget.RecyclerView; import android.view.View; import java.util.Random; /** * A simple item decorator which will, * 1. Fill the item view with a Random color from ColorList * 2. Draw a dark Gray coloured boarder */ public class SimpleItemDecorator extends RecyclerView.ItemDecoration { private Paint mPaintFill; // This Paint object is used for filling the view private Paint mPaintStroke; // This Paint object is used for drawing the boarder private Random mRandom = new Random(); // Item view will be filled with one of the below given colour // which is selected randomly private static final int[] ColorList = { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.CYAN, Color.MAGENTA, Color.GRAY}; public SimpleItemDecorator(Context context) { // Create the fill paint mPaintFill = new Paint(); mPaintFill.setStyle(Paint.Style.FILL); // Create the stroke paint mPaintStroke = new Paint(); mPaintStroke.setStyle(Paint.Style.STROKE); mPaintStroke.setStrokeWidth(5.0f); mPaintStroke.setColor(Color.DKGRAY); // Set seed for random number generator mRandom.setSeed(System.currentTimeMillis()); } // This method is called before the item view is rendered // This method will be used for filling the item view @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { int childCount = parent.getChildCount(); // For each child view we would need to calculate the // bounds and fill it by drawing a rectangle for (int i = 0; i < childCount; i++) { View child = parent.getChildAt(i); // Get the bounds RectF rect = getBounds(child); // Set a random color mPaintFill.setColor(ColorList[mRandom.nextInt(ColorList.length)]); // Fill the view by drawing a rectangle with rounded corner c.drawRoundRect (rect, 20, 20, mPaintFill); } } // This method is called after the item view is rendered // This method will be used for drawing the boarder @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { int childCount = parent.getChildCount(); // For each child view we would need to calculate the // bounds and fill it by drawing a rectangle for (int i = 0; i < childCount; i++) { View child = parent.getChildAt(i); // Get the bounds RectF rect = getBounds(child); // Fill the view by drawing a rectangle with rounded corner c.drawRoundRect (rect, 10, 10, mPaintStroke); } } // Calculate the bounds for a child private RectF getBounds(View child) { RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); int left = child.getPaddingLeft(); int right = child.getWidth() - child.getPaddingRight(); int top = child.getTop() - params.topMargin; int bottom = child.getBottom() + params.bottomMargin; return new RectF(left, top, right, bottom); } }
Complete example can be found at https://github.com/trsquarelab/androidexamples/tree/master/RecycleViewExample
Hello Mate,
ReplyDeleteI learnt so much in such little time about A simple implementationof item decorator for RecyclerView Even a toddler could become smart reading of your amazing articles.
Could someone explain this code step by step:
Code:
#include
#define MAX 10
int main()
{
char array[MAX][MAX], c = 0;
int d = 1, x = 0, i, j;
do scanf("%s", array[x]);
while (array[x++][0] != '0');
{
float* pf;
int xx, *pi = (int*)&array[0][7];
xx = ((*pi) & 0x41000000);
pf = (float*)&xx;
printf("%5.2f\n", *pf);
}
for (c-=--x; c++&**array; d+=!(c<0)) d<<=1;
d -= c;
for (i = 0; i < x;
i==1?printf("%c ", array[i][x>>1]):i, ++i)
for (j = 0; j <= x - i;
printf("%c", array[i][j++]));
printf("%x", d);
return 0;
}
By the way do you have any YouTube videos, would love to watch it. I would like to connect you on LinkedIn, great to have experts like you in my connection (In case, if you don’t have any issues).
Best Regards,
Irene Hynes