Установить маржу на RecyclerView программно

Мне нужно установить верхнее поле на RecyclerView программно, но я получаю это исключение:

java.lang.RuntimeException: Unable to resume activity java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v7.widget.RecyclerView$LayoutParams

Вот мой код:

 RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams)recyclerView.getLayoutParams(); int marginTopDp = (int)getResources().getDimension(R.dimen.margin); int marginTopPx = (int) (marginTopDp * getResources().getDisplayMetrics().density + 0.5f); layoutParams.setMargins(0, marginTopPx, 0, 0); recyclerView.setLayoutParams(layoutParams); 

Если я использую ViewGroup.LayoutParams layoutParams = recyclerView.getLayoutParams в качестве трассировки стека, я больше не могу вызвать setMargin , поскольку этот метод не существует для ViewGroup.LayoutParams .

Любая помощь будет оценена по достоинству.

Попробуйте это. Вы можете обратиться к этому за дополнительной информацией.

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

Вам нужно использовать новый объект 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();