プログラムで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
を使用すると、ViewGroup.LayoutParams
にはそのメソッドが存在しないため、setMargin
を呼び出すことができなくなります。
任意の助けいただければ幸いです。
これを試してみてください。詳細は this を参照してください。
ViewGroup.MarginLayoutParams marginLayoutParams = new 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();
私にとって、recyclerview
の親はconstraintLayout
であり、
val margins = (rv.layoutParams as ConstraintLayout.LayoutParams).apply {
leftMargin = 0
rightMargin = 0
}
rv.layoutParams = margins
キャストエラーが発生する、viewGroup.LayoutParamsをCOnstarintLayout.LayoutParamsにキャストできない