尝试设置列表项的边距时出现java ClassCastException
我正在尝试创建一种方法,该方法可以在给定距离的情况下水平置换列表元素。list元素是RelativeLayout,因此我执行以下操作:
// cast View to RelativeLayout
RelativeLayout listLayout = (RelativeLayout) listElement;
// Get layout params
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) listLayout.getLayoutParams();
//set the margins
layoutParams.setMargins(distance,0,0,0);
// ??
listLayout.setLayoutParams(layoutParams);
// Profit!!!
我签入了调试器,列表项是一个RelativeLayout,甚至在我强制转换它之前(只是为了确保)。然而,我得到以下信息:
java.lang.ClassCastException: 安卓.widget.AbsListView$LayoutParams cannot be cast to 安卓.widget.RelativeLayout$LayoutParams
我已经尝试了很多关于这个的变化,他们都停止了一个演员错误。但我不明白为什么,因为使用了RelativeLayout,所以我应该能够调用该方法并返回RelativeLayout。LayoutParams对象
# 1 楼答案
listLayout位于非RelativeLayout的其他视图的内部,因此LayoutParams不是RelativeLayout。布局参数。。。尝试使用ViewGroup.LayoutParams接口,如下所示: