2014-04-23 168 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();