Gridview显示图片多个自适配
根据Gridview自带的数据设置
gridView.setHorizontalSpacing(horizontalSpacing);
// 设置gridView行间距
gridView.setVerticalSpacing(horizontalSpacing);
// 设置gridView列间距
gridView.setColumnWidth(gridItemWidth);
// 设置gridView行宽度
gridView.setStretchMode(2);
// 设置gridView高度随宽度变化
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
private GridView gridView;
private List<Integer> img;
private GridViewAdpter gridViewAdpter;
private int screenWidthDip;
private float density;
private int gridItemWidth;
private int horizontalSpacing = 20;// gridView行间距
private int Horizontal_num = 5;// 要显示的行数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
findView();
getData();
setAdpter();
}
private void init() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenWidthDip = dm.widthPixels;
this.density = dm.density;
gridItemWidth = getGridItemWidth();
}
private void findView() {
gridView = (GridView) findViewById(R.id.gridview);
gridView.setHorizontalSpacing(horizontalSpacing);// 设置gridView行间距
gridView.setVerticalSpacing(horizontalSpacing);// 设置gridView列间距
gridView.setColumnWidth(gridItemWidth);// 设置gridView行宽度
gridView.setStretchMode(2);// 设置gridView高度随宽度变化
}
private void getData() {
img = new ArrayList<Integer>();
for (int i = 0; i < 20; i++) {
img.add(R.drawable.ic_launcher);
}
}
/**
* 设置适配器
*/
private void setAdpter() {
if (gridViewAdpter == null) {
gridViewAdpter = new GridViewAdpter(MainActivity.this, img,
gridItemWidth);
gridView.setAdapter(gridViewAdpter);
}
}
private int getGridItemWidth() {
int gridItemWidth = 0;
gridItemWidth = (int) ((screenWidthDip - (12 + 24 + horizontalSpacing
* (Horizontal_num - 1))
* density) / Horizontal_num);
Log.i(TAG, "屏幕宽度==>" + screenWidthDip);
Log.i(TAG, "gridView行宽度==>" + gridItemWidth);
return gridItemWidth;
}
}
这个耦合性有些高,必须手动计算出Gridview的宽度 getGridItemWidth
源码下载地址