错误java.lang.ClassCastException:android.view.ViewGroup $ LayoutParams

时间:2012-10-05 08:28:19

标签: android android-layout gridview

我已经开始使用android应用程序了,我设计了RelativeLayout中的布局是GridView的父级,我只是想设置LayoutParams的{​​{1}}以编程方式。

下面是我的布局和代码:我如何做:

Layout.xml

GridView

代码:

<?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

      <RelativeLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/relativeLayout"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" 
          android:background="#FFFFFF">

       <GridView
           xmlns:android="http://schemas.android.com/apk/res/android"
           android:id="@+id/gridview"
           android:layout_width="fill_parent"
           android:layout_height="510dp"
           android:gravity="center"
           android:horizontalSpacing="@dimen/image_grid_hspacing"
           android:numColumns="@integer/grid_num_cols"
           android:stretchMode="columnWidth"
           android:verticalSpacing="@dimen/image_grid_vspacing"
           android:background="#FFFFFF" />   

       </RelativeLayout>
    </ScrollView>

当我启动我的应用程序时,它总是崩溃并且错误logcat说

错误java.lang.ClassCastException:android.view.ViewGroup $ LayoutParams

对于一个愚蠢的问题,我不知道为什么它会抛出异常。请分享您对该问题可能出现的可能性的看法

2 个答案:

答案 0 :(得分:2)

您只放置存在于所有ViewGroup对象中的LayoutParams。所以需要清楚地提到ViewGroup对象GridView属于哪个。

您可以更改以下代码,

GridView gridview = (GridView) rootView.findViewById (R.id.gridview);
gridview.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 300));

答案 1 :(得分:1)

从xml布局的外观来看,GridView的父级为RelativeLayout,因此您必须使用RelativeLayout.LayoutParams

gridview.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 300));

此外,如果无法在屏幕上安装儿童,请避免在GridView中使用ScrollView作为GridView手柄自行滚动。