在開發的過程中可能需要用到listview嵌套gridview的場景,但是在Android中, 不能在一個擁有Scrollbar的組件中嵌入另一個擁有Scrollbar的組件,因為這不科學,會混淆滑動事件,導致只顯示一到兩行數據。那么就換一 種思路,首先讓子控件的內容全部顯示出來,禁用了它的滾動。如果超過了父控件的范圍則顯示父控件的scrollbar滾動顯示內容,思路是這樣,一下是代 碼。
具體的方法是自定義GridView組件,繼承自GridView。重載onMeasure方法:
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也適用
