我很难设计带有页眉和页脚的GridView
版面,如下所示:
我做的是,只使用一个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放在listview中是不对的,但是客户端要求这种布局..
答案 0 :(得分:0)
这是一个很好的起点:
这个类非常好地处理标题,与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();
答案 1 :(得分:-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>
答案 2 :(得分:-1)
gridview类没有提供方法addheaderview()和addfooterview(), 您可以采用垂直方向的线性布局,并可以通过给布局充气添加自定义标题,然后在该页脚视图后面膨胀gridview。