2012-10-05 71 views
-4

我已經開始工作android應用程序,我設計了這樣的RelativeLayout中的佈局是GridView的父級,我只是想以編程方式設置GridViewLayoutParams

下面是我的佈局和代碼,我過得怎麼樣:

Layout.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.ClassCastExcepti on:android.view.ViewGroup $ LayoutParams

對不起,一個愚蠢的問題,我不知道它爲什麼拋出異常。請分享你對這個問題的看法,這可能是爲異常的可能性

回答

2

您僅放置存在於所有ViewGroup對象中的LayoutParams。因此需要清楚地提及哪些ViewGroup對象GridView所屬。

您如下更改代碼,

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

從你的XML佈局看起來你GridView有自己的父一RelativeLayout,所以你必須使用RelativeLayout.LayoutParams

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

此外,避免使用中的GridView作爲GridView可自行處理如果兒童無法安裝在屏幕上的滾動功能。

相關問題