Gridview的stretchMode详解附自动宽度

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:verticalSpacing="35px" 

android:horizontalSpacing="5px" 

android:numColumns="auto_fit" 

android:columnWidth="100px" 

android:stretchMode="columnWidth" 

Android:gravity="center" />

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if(convertView==null){

convertView=inflater.inflate(R.layout.grid_item,parent,false);

params = convertView.getLayoutParams();

params.height=(parent.getHeight()-10)/2;

convertView.setLayoutParams(params);

}

if(convertView.getHeight()==0){

params.height=(parent.getHeight()-10)/2;

convertView.setLayoutParams(params);

}

return convertView;

}

在Adapter中的getView方法中通过计算减去水平或数值距离,可以精确的控制一屏可以现实多少GridView Item


stretchMode:只有在指定了columnWidth的时候才会有作用,如果指定了stretchMode而没有给columnWidth的值,则item不显示,就是宽为0;

spacingWidth: 剩余的空间用来填空间隙(顶行开始显示item,最边上没有间隙)

spacingWidthUniform:剩余的空间用来填空间隙(所有的item居中显示,就是最边上也会有间隙)

columnWith:剩余的间隙用item的宽度去填充,就是item的宽度自动缩放

none:colunm不缩放,顶行开始显示

horizontalSpacing并不是第一优先级:就是如果设置的item宽度过大,会挤一块,并不会保证一个最小的间隙。

如果不指定stretchMode,默认情况下,item顶行显示,item的宽度会根据屏幕除掉horizontalSpacing之后的剩余宽度自动缩放,此时会保证horizontalSpacing所设置的值。

推荐阅读更多精彩内容