最近在项目中需要在主页中设置一个四宫格的页面, 于是就使用了GrideView与BaseAdapter的组合,但是完成后它会滑动,并不是固定的,而且它也不是适应其父容器大小设置的.
要解决这个问题,我在BaseAdapter的getView中重写了item的大小:
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
//四宫格,即两行两列
view = LayoutInflater.from(mContext).inflate(R.layout.gridview_item, null);
int height = viewGroup.getHeight() / 2;//item的高度
int width = viewGroup.getWidth() / 2;//item的宽度
GridView.LayoutParams params = new GridView.LayoutParams(width, height);
view.setLayoutParams(params);
}
//第一次调用getView时,parent的高度还是0,所以这里需要判断一下,并且重新设置,否则第一个子项显示不出来
if(view.getHeight()==0){
GridView.LayoutParams layoutParams= (GridView.LayoutParams) view.getLayoutParams();
layoutParams.height=viewGroup.getHeight()/2;
layoutParams.width=viewGroup.getWidth()/2;
view.setLayoutParams(layoutParams);
}
......
return view;
}
然后在调用GridView是需要设置:
mGridView.setOverScrollMode(View.OVER_SCROLL_NEVER);
从而禁止其滚动超过页外的item.
如有错误,欢迎大家来指正!