2013-12-13 63 views
13
<ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/titleBarBG" 
     android:layout_alignParentLeft="true" > 

    <RelativeLayout 
     android:id="@+id/scrollContent" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 

    <GridView 
     android:id="@+id/issueList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/archiveTitle" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="@drawable/customshape" 
     android:numColumns="3" 
     android:overScrollMode="never" 
     android:scrollbars="none" > 
    </GridView> 

</RelativeLayout> 
</ScrollView> 

我想創建一個類似於表格的gridview。例如,網格的大小會增加,這會使gridview更高。我不想隱藏額外的內容,我想網格視圖顯示所有內容並在有額外內容時擴展高度Gridview根據滾動視圖內的實際高度顯示

如何實現這個?感謝

+0

爲什麼你不想讓GridView提供滾動? ScrollView具有哪些滾動功能,GridView不支持? – Nilzor

+0

謝謝你,唯一的問題是,當項目在它的數量增加 – user782104

+2

你可能會尋找[ExpandableHeightGridView] [1] [1]的GridView的高度應增加:HTTP://計算器8481844/gridview-height-gets-cut/8483078#8483078 – Nilzor

回答

21
public class MyGridView extends GridView { 

    public MyGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyGridView(Context context) { 
     super(context); 
    } 

    public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
       MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 
    } 
} 
+1

你應該解釋一下。 –

+0

偉大的工作。請解釋。謝謝 –

+0

良好的工作夥計...感謝這個代碼我嘗試了很多這個,但我沒有發現任何東西,最後我發現這個再次感謝你 –

3

這是稍微清理的版本:Grid of images inside ScrollView

WrappedGridView.java:

/** 
* Use this class when you want a gridview that doesn't scroll and automatically 
* wraps to the height of its contents 
*/ 
public class WrappedGridView extends GridView { 
    public WrappedGridView(Context context) { 
     super(context); 
    } 

    public WrappedGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public WrappedGridView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // Calculate entire height by providing a very large height hint. 
     // View.MEASURED_SIZE_MASK represents the largest height possible. 
     int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
} 

包括像你將一個網格佈局的XML佈局。使用適配器來提供視圖。

據我所知,這是現在最簡單的解決方案。在處理包裝的框架中沒有可用的其他視圖。如果有人提供優雅的自動調整大小的表格視圖,那將會很好。爲此目的修改GridView.java可能不是一個壞主意。

或者,您可能會發現其中一個'FlowLayout'項目可以接受。有android-flowlayoutFlowLayout。這些比簡單的網格稍微靈活一點,我認爲效率稍低一些。你也不應該爲他們提供一個適配器。

相關問題