最近在做一个项目,有一个需求是在ScrollView中内嵌一个GridView。
刚开始,我是以为能直接内嵌在里面:
15 1615
1 mGridView = (GridView)findViewById(R.id.gridView);2 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,3 letters);4 mGridView.setAdapter(adapter);
运行效果:
只显示一行。
分析原因:ScrollView和GridView都带滚动条,引起冲突,导致GridView只能显示一行。
这就需要自定义GirdView:
1 public class MyGridView extends GridView { 2 public MyGridView(Context context, AttributeSet attrs) { 3 super(context, attrs); 4 } 5 public MyGridView(Context context) { 6 super(context); 7 } 8 public MyGridView(Context context, AttributeSet attrs, int defStyle) { 9 super(context, attrs, defStyle);10 }11 @Override12 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {13 int expandSpec = MeasureSpec.makeMeasureSpec(14 Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);15 super.onMeasure(widthMeasureSpec, expandSpec);16 }17 }
15 1615
运行效果:
完美解决。