android listView巢狀gridview的使用心得

yangxi_001發表於2013-10-16

在開發的過程中可能需要用到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也適用

相關文章