Skip to content Skip to sidebar Skip to footer

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"