ViewGroup.LayoutParams params = recyclerView.getLayoutParams();
ViewGroup.MarginLayoutParams marginParams = null;
//获取view的margin设置参数
if (params instanceof ViewGroup.MarginLayoutParams) {
marginParams = (ViewGroup.MarginLayoutParams) params;
} else {
//不存在时创建一个新的参数
//基于View本身原有的布局参数对象
marginParams = new ViewGroup.MarginLayoutParams(params);
}
marginParams.setMargins(0,0,1,0);
千万记住这里面的if 语句的判断, 如果直接marginParams = new ViewGroup.MarginLayoutParams(params); 会报错
E/AndroidRuntime: FATAL EXCEPTION: main
Process: kodulf.swiperefreshlayoutrecyclerviewdemo, PID: 14673
java.lang.ClassCastException: android.view.ViewGroup$MarginLayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
at android.widget.LinearLayout.measureVertical(LinearLayout.java:779)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22093)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6614)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22093)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6614)
Android 动态设置margin问题解决

博客介绍了在Android开发中遇到动态设置margin时出现的类型转换错误,重点讲解了解决这一问题的关键if语句判断,防止直接使用ViewGroup.MarginLayoutParams导致的运行时异常。
250

被折叠的 条评论
为什么被折叠?



