有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尝试设置列表项的边距时出现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) 个答案

  1. # 1 楼答案

    listLayout位于非RelativeLayout的其他视图的内部,因此LayoutParams不是RelativeLayout。布局参数。。。尝试使用ViewGroup.LayoutParams接口,如下所示:

    // Get layout params
    ViewGroup.LayoutParams layoutParams = listLayout.getLayoutParams();