首先是看一下错误的效果,我们会看到GridView是显示不全的
这个dome效果是非常的简单,首先看布局,就是ScrollView里面嵌套一个Gridview和ListView,当然这时候我们需要考虑的是冲突问题,不解决listview和gridview只会显示一行
,我们需要自定义ListView和Gridview,解决冲突的做法网上代码都有,可以参考
<ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:orientation="vertical"> <com.bwei.view.MyGrid android:id="@+id/girdview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numColumns="4"></com.bwei.view.MyGrid> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_marginTop="5dp" android:background="#dab2b2"/> <com.bwei.view.MyList android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp"></com.bwei.view.MyList> </LinearLayout> </ScrollView>
2:我们在MainActivity里面找控件,添加数据,设置适配器,然后这个错误的效果就会出来。
解决思路:我们看效果可以看到,下面这两个的textview一行放不下,自动越了一行,这时候如果不在代码中设置的话,系统是不会自己计算高度的,需要我们
在设置GridView显示条目的布局里面设置一条属性,只有让高度全部计算在内,才会显示,当然很多时候字体不长的话也不回遇到这个问题,所以很多人都忽视了
看textivew里面,这一行属性,这个属性是设置textview的行数,比如数据比较长的话,一行放不下的话我们需要设置一下这个属性,指定它为几行,然后运行就ok啦
android:lines="2"
<ImageView android:id="@+id/grid_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:src="@mipmap/ren"/> <TextView android:id="@+id/grid_tv" android:lines="2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="fef"/>