我正在尝试创建一个方法,可以在给定距离的情况下水平移动列表元素。 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: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
我已经尝试了很多变化,并且它们都因施法错误而停止。但我无法弄清楚为什么,因为正在使用RelativeLayout,所以我应该能够调用该方法并获取一个RelativeLayout.LayoutParams对象。
答案 0 :(得分:0)
您的listLayout位于不是RelativeLayout的其他视图中,因此LayoutParams不是RelativeLayout.LayoutParam ...尝试使用ViewGroup.LayoutParams intead,如下所示:
// Get layout params
ViewGroup.LayoutParams layoutParams = listLayout.getLayoutParams();