-4

我已经开始工作 android 应用程序,我设计的布局RelativeLayout是 的父级GridView,我只是想以LayoutParams编程方式设置GridView

下面是我的布局和代码,我在做什么:

布局.xml

<?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>

代码 :

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

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

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

对不起一个愚蠢的问题,我不知道它抛出异常的原因。请分享您对例外情况的可能性的问题的看法

4

2 回答 2

2

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

您更改代码如下,

GridView gridview = (GridView) rootView.findViewById (R.id.gridview);
gridview.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 300));
于 2012-10-05T08:39:59.817 回答
1

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

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

此外,如果孩子不能安装在屏幕上,请避免将GridViewin aScrollView用作自己的滚动句柄。GridView

于 2012-10-05T08:38:40.333 回答