2014-04-23 125 views
3

我有一個艱難的時間來設計一個GridView佈局,頁眉和頁腳這樣的:添加頁眉/頁腳的GridView

layout

我所做的是,創建一個ListView只有一個項目,其是GridView並使用addHeaderView()addFooterView()添加頁眉/頁腳。問題是GridView不顯示整個項目。我以前做的GridView滾動使用禁用:

gridview.setOnTouchListener(new View.OnTouchListener(){ 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if(event.getAction() == MotionEvent.ACTION_MOVE){ 
        return true; 
       } 
       return false; 
      } 

     }); 

有沒有一種方式來展現使GridView顯示所有項目?我試過將GridView的高度設置爲wrap_content,但它不起作用。下面是GridView佈局:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="2" 
    android:background="@color/main_gray" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"> 

</GridView> 

我知道這是不對的把GridView控件列表視圖,但要求對這種佈局的客戶端裏面..

+0

你爲什麼不添加GridView控件的佈局和頂部添加兩個視圖和底部 – Nikhil

+0

時,它的滾動 – danieljohngomez

+0

頁眉和頁腳將不包括@ DanielJohnGomez,你的問題解決了嗎? – srain

回答

-1

檢查了這一點希望解決您的問題

<LinearLayout 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     android:background="#AAFFDD" > 
    </LinearLayout> 

    <GridView 
     android:id="@+id/gridview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.97" 
     android:background="@color/main_gray" 
     android:gravity="center" 
     android:horizontalSpacing="10dp" 
     android:numColumns="2" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="10dp" > 
    </GridView> 

    <LinearLayout 
     android:id="@+id/footer" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     android:background="#FADFAE" > 
    </LinearLayout> 

</LinearLayout> 
+0

相同,如果我這樣做,滾動時不會包含頁眉和頁腳 – danieljohngomez

+0

我已經在其工作正常之前嘗試此操作,將.97的重量賦予gridview它將按您的要求工作。 – HarrY

-1

的GridView類不提供的方法addheaderview()和addfooterview(), 你可以採取霖earlayout與方向垂直,並可以通過膨脹佈局添加自定義標題,然後在頁腳視圖後膨脹gridview。

+0

這個答案根本沒有任何幫助 – Renetik

0

這裏是一個很好的起點:

https://android.googlesource.com/platform/packages/apps/Gallery2/+/idea133/src/com/android/photos/views/HeaderGridView.java

此類處理頭非常好,exaclty的方式ListView一樣呢。

您應該設法添加頁腳處理,但它有點複雜,因爲您必須根據您在Gridview中擁有的元素數來設置佔位符。 而作爲一個Gridview行的高度是根據它的最後一個元素的高度,你就必須讓你的GridView

convertView.setVisibility(View.INVISIBLE); 
convertView.setMinimumHeight(lastItemHeight); 

我用這個來計算最後一項高度的最後一個項目的高度。它可能不是最優的,但它適合我的使用情況:

View v = mAdapter.getView(adjPosition, convertView, parent); 

//measure last item height for placeholders before footer views 
v.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); 
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
       lastItemHeight = v.getMeasuredHeight(); 
lastItemHeight = v.getMeasuredHeight();