我已经开始使用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
对于一个愚蠢的问题,我不知道为什么它会抛出异常。请分享您对该问题可能出现的可能性的看法
答案 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
手柄自行滚动。