最近做项目需要把一个GridView内嵌在ScrollView中,刚开始我直接嵌入进去
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"></GridView>
</ScrollView>
结果GridView只显示了一行(刚开始我以为是GridView的数据源或者适配器出了问题)
导致原因:ScrollView和GridView都带滚动条,引起冲突,导致GridView只能显示一行。(ListView内嵌进去一样会冲突)
解决办法:自定义GridView
public class CustomGridView extends GridView{
public CustomGridView(Context context) {
super(context);
}
public CustomGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//这个是去掉滚动条
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);//注意super里的参数
}
}
<com.yonglian.wdyapp.hudong.CustomGridView
android:id="@+id/hudong_remen_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"></com.yonglian.wdyapp.hudong.CustomGridView>
得到理想的运行效果