我們經常會用到在ScrollView嵌套ListView、GridView,給layout_height設置wrap或者match的時候,結果只顯示一行,而給它設置一個固定的高度雖然能顯示出來,但是會顯示不全,或者空出一段。
原因:ScrollView在計算高度的時候,如果是wrap或者是match就會出錯,結果只顯示一行。
解決方案:定義一個類GridView4ScrollView繼承GridView,然後重寫onMeasure方法
@Override
/**
* 重寫該方法,重新計算GridView高度
* 累計所有行,計算出GridView的最大高度
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
ListView類似;
PagerSlidingTabStrip放在ScrollView中,ViewPager內容顯示不出來也是類似問題;
解決方案:很簡單,要給ViewPager,layout_height一個固定的高度;