在开发中遇到了ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当它们碰到一起的时候便会出问题,即GridView会显示不全。

解决办法,自定义一个GridView控件。

​​​​


  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. @Override
  12. 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. }

该自定义控件只是重写了GridView的onMeasure方法。


​​


  1. <ScrollView  
  2.     android:layout_height="wrap_content"   
  3.         android:layout_width="fill_parent"  
  4.     android:id="@+id/scroll_content" >   
  5.     <com.manoel.MyGridView xmlns:android="http://schemas.android.com/apk/res/android"   
  6.         android:id="@+id/grid_view" android:layout_width="fill_parent"   
  7.         android:layout_height="wrap_content" android:numColumns="auto_fit"   
  8.         android:horizontalSpacing="1dip" android:verticalSpacing="1dip"   
  9.         android:columnWidth="150dip" android:stretchMode="columnWidth"   
  10.         android:gravity="center" />   
  11. </ScrollView>  



​​


  1. MyGridView gridview = (MyGridView) findViewById(R.id.grid_view);
  2. gridview.setAdapter(new MyAdapter(this));