在開發的過程當中可能須要用到listview嵌套gridview的場景,可是在android中,不能在一個擁有Scrollbar的組件中嵌入另外一個擁有Scrollbar的組件,由於這不科學,會混淆滑動事件,致使只顯示一到兩行數據。那麼就換一種思路,首先讓子控件的內容所有顯示出來,禁用了它的滾動。若是超過了父控件的範圍則顯示父控件的scrollbar滾動顯示內容,思路是這樣,一下是代碼。
具體的方法是自定義GridView組件,繼承自GridView。重載onMeasure方法:
Java代碼
java
public class MyGridView extends GridView { public MyGridView(android.content.Context context, android.util.AttributeSet attrs) { super(context, attrs); } /** * 設置不滾動 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
其中onMeasure函數決定了組件顯示的高度與寬度;
makeMeasureSpec函數中第一個函數決定佈局空間的大小,第二個參數是佈局模式
MeasureSpec.AT_MOST的意思就是子控件須要多大的控件就擴展到多大的空間
一樣的道理,ListView也適用 android