由于开发会遇到gridview的item无法剧中的情况,所以采用下面方法解决此问题:
private int itemLeftPadding;
private int itemRightPadding;
private int tempTop = 0;
private int tempBottom = 0;
private int paddingTop = 0;
private int paddingMiddle = 0;
private int paddingBottom = 0;
/**
* 设置gridView item的上中下padding
* @param paddingTop
* @param paddingMiddle
* @param paddingBottom
* @param columns
*/
public void setItemPaddings(int paddingTop, int paddingMiddle, int paddingBottom, int columns) {
this.paddingTop = paddingTop;
this.paddingMiddle = paddingMiddle;
this.paddingBottom = paddingBottom;
this.columns = columns;
}
private void addPadding(int position, View convertView) {
// 设置上中下距离
int endViewCount = (getCount() % columns ) == 0 ? columns : (getCount() % columns);
if (position <= (columns - 1)) {
convertView.setPadding(0, paddingTop, 0, 0);
tempTop = paddingTop;
tempBottom = 0;
} else if (position >= (getCount() - endViewCount)) {
convertView.setPadding(0, paddingMiddle, 0, paddingBottom);
tempTop = paddingMiddle;
tempBottom = paddingBottom;
} else {
convertView.setPadding(0, paddingMiddle, 0, 0);
tempTop = paddingMiddle;
tempBottom = 0;
}
if (position % 2 == 0) {
convertView.setPadding(itemLeftPadding, tempTop, 0, tempBottom);
} else {
convertView.setPadding(0, tempTop, itemRightPadding, tempBottom);
}
}