ScrollView與GridView滾動發生衝突
阿新 • • 發佈:2019-02-10
當GridView巢狀在ScrollView裡時,發現GridView只顯示了一行。這是因為GridView有自己的滾動條,而ScrollView也有自己的滾動條,兩者發生了衝突。
解決方法是重寫GridView的OnMesure方法,使其不再出現滾動條。
public class MyGridView extends GridView { public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(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); } }
onMeasure()方法的一些解釋:
MeasureSpc類封裝了父View傳遞給子View的佈局(layout)要求。
static int makeMeasureSpec(int size,int mode) : 根據提供的大小值和模式,建立一個測量值(格式)
然後在佈局檔案中加入MyGridView就行。
<com.example.administrator.calendartest.MyGridView android:id="@+id/myGridView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numColumns="4" </com.example.administrator.calendartest.MyGridView>