Skip to content Skip to sidebar Skip to footer

Set Margin On Recyclerview Programmatically

I need to set the top margin on a RecyclerView programmatically, but I get this exception: java.lang.RuntimeException: Unable to resume activity java.lang.ClassCastException: andr

Solution 1:

Try this out. You can refer to this for more info.

ViewGroup.MarginLayoutParamsmarginLayoutParams=newViewGroup.MarginLayoutParams(mRecyclerView.getLayoutParams());
marginLayoutParams.setMargins(0, 10, 0, 10);
mRecyclerView.setLayoutParams(marginLayoutParams);

Solution 2:

for me, the parent of recyclerview is a constraintLayout,

val margins = (rv.layoutParams as ConstraintLayout.LayoutParams).apply {
        leftMargin = 0
        rightMargin = 0
    }
    rv.layoutParams = margins

or it will get cast error, viewGroup.LayoutParams can't be cast to COnstarintLayout.LayoutParams

Solution 3:

You need use new object of MargingLayoutParams

final FrameLayout.MarginLayoutParams marginLayoutParams =new      
                      FrameLayout.MarginLayoutParams(rvContacts.getLayoutParams());
    marginLayoutParams.leftMargin =left;
    marginLayoutParams.topMargin = top;
    marginLayoutParams.rightMargin =right;
    marginLayoutParams.bottomMargin = bottom;

    recyclerView.setLayoutParams(marginLayoutParams);
    recyclerView.requestLayout();

Solution 4:

I am also facing this type of issue, Use below code to handle margin issue of recyclerview.

    ViewGroup.MarginLayoutParams marginLayoutParams=
    (ViewGroup.MarginLayoutParams) recyclerView.getLayoutParams();

    // here i try to set only top margin, Get dimension from dimension file.int topMargin =  getResources()
    .getDimensionPixelSize(R.dimen.top_margin);

    marginLayoutParams.setMargins(marginLayoutParams.getMarginStart(),
    topMargin, marginLayoutParams.getMarginEnd(), marginLayoutParams.bottomMargin);

    recyclerView.setLayoutParams(marginLayoutParams);

Solution 5:

Padding usage with clipToPadding="false" did the trick in my case. [Kotlin]

So I added android:clipToPadding="false" to my RecyclerView in xml. Can be done programmatically as well.

And then just used:

recyclerView.setPadding(10, 0, 0, someSpace)

someSpace is dp variable in case you need it.

resources.getDimension(R.dimen.some_space).toInt() P.S don't forget to create some_space in dimension file :)

Post a Comment for "Set Margin On Recyclerview Programmatically"