How To Give Space Between Gridview In Through Java
How do i get perfect aligning between the gridView items, i have added the gridview using java and it's base adapter is set in which i added the image and textview. Xml Code: &
Solution 1:
Use Space Decoration Class For That
publicclassSpacesItemDecorationextendsRecyclerView.ItemDecoration {
privateint space;
publicSpacesItemDecoration(int space) {
this.space = space;
}
@OverridepublicvoidgetItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
outRect.left = space;
outRect.right = space;
outRect.bottom = space;
// Add top margin only for the first item to avoid double space between itemsif (parent.getChildLayoutPosition(view) == 0) {
outRect.top = space;
} else {
outRect.top = 0;
}
}
}
Your Activity Where You Set Your Adapter
int spacing = getResources().getDimensionPixelSize(R.dimen.spacing);
recyclerview.addItemDecoration(newSpacesItemDecoration(spacing));
Specify in dimen.xml
<dimenname="spacing">5px</dimen>
Xml Code:
<android.support.v7.widget.CardViewandroid:layout_width="175dp"android:layout_height="200dp"android:orientation="vertical"app:cardCornerRadius="5dp"app:cardElevation="5dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"><ImageViewandroid:id="@+id/ImageWomenItem"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true"android:scaleType="fitXY"android:src="@drawable/womenone" /></LinearLayout><TextViewandroid:id="@+id/itemName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Red Top"android:textColor="#8e8d8d"android:textSize="15dp" /></LinearLayout></android.support.v7.widget.CardView>
Solution 2:
Try this,
recyclerView = (RecyclerView) findViewById(R.id.recyclerView );
recyclerView .setLayoutManager(newGridLayoutManager(getActivity(), 2));
int spanCount = 2;
int spacing_left = 10;
int spacing_top=15;
recyclerView.addItemDecoration(newGridSpacingItemDecoration(spanCount, spacing_left, spacing_top));
GridSpacingItemDecoration:
/* set spacing for grid view */publicclassGridSpacingItemDecorationextendsRecyclerView.ItemDecoration {
finalprivateint spanCount, spacing, spacing_top;
finalprivateboolean includeEdge;
publicGridSpacingItemDecoration(int spanCount, int spacing_left, int spacing_top) {
this.spanCount = spanCount;
this.spacing = spacing_left;
this.includeEdge = true;
this.spacing_top = spacing_top;
}
@OverridepublicvoidgetItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
intposition= parent.getChildAdapterPosition(view); // item phases_positionintcolumn= position % spanCount; // item columnif (includeEdge) {
outRect.left = spacing - column * spacing / spanCount;
outRect.right = (column + 1) * spacing / spanCount;
if (position < spanCount) { // top edge
outRect.top = spacing_top;
}
outRect.bottom = spacing_top; // item bottom
} else {
outRect.left = column * spacing / spanCount;
outRect.right = spacing - (column + 1) * spacing / spanCount;
if (position >= spanCount) {
outRect.top = spacing_top; // item top
}
}
}
}
Solution 3:
Add padding to your root layout of adapter xml.
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="8dp"><android.support.v7.widget.CardViewapp:cardCornerRadius="5dp"app:cardElevation="5dp"android:layout_width="180dp"android:layout_height="200dp"android:layout_margin="5dp"android:orientation="vertical">.......
</android.support.v7.widget.CardView></LinearLayout>
Post a Comment for "How To Give Space Between Gridview In Through Java"