前些日子在開發中用到了需要ScrollView嵌套GridView的情況,由於這兩款控制項都內建捲軸,當它們碰到一起的時候便會出問題,即GridView會顯示不全。
解決辦法,自訂一個GridView控制項。
public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
該自訂控制項只是重寫了GridView的onMeasure方法。
XML布局代碼
<ScrollViewandroid:layout_height="wrap_content" android:layout_width="fill_parent"android:id="@+id/scroll_content" > <com.manoel.MyGridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/grid_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="auto_fit" android:horizontalSpacing="1dip" android:verticalSpacing="1dip" android:columnWidth="150dip" android:stretchMode="columnWidth" android:gravity="center" /> </ScrollView>
Java調用代碼
MyGridView gridview = (MyGridView) findViewById(R.id.grid_view); gridview.setAdapter(new MyAdapter(this));
參考資料:
http://fine36.blog.163.com/blog/static/1892510052011615654163/