如何获取GridView的行数?

我昨晚必须解决这个问题,这对我很有效。它查找孩子的宽度,并假设所有单元格都具有相同的宽度,将GridView的宽度除以孩子的宽度。(getColumnWidth()在早期的API中也不可用,因此需要解决办法)。
代码语言:javascript运行复制private int getNumColumnsCompat() {
if (Build.VERSION.SDK_INT >= 11) {
return getNumColumnsCompat11();
} else {
int columns = 0;
int children = getChildCount();
if (children > 0) {
int width = getChildAt(0).getMeasuredWidth();
if (width > 0) {
columns = getWidth() / width;
}
}
return columns > 0 ? columns : AUTO_FIT;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private int getNumColumnsCompat11() {
return getNumColumns();
}然而,有一些重要的限制需要注意。
它只有在GridView布局后才能工作,并且只有当它实际添加了一些视图时才能工作。这不会考虑使用setHorizontalSpacing()添加的任何单元格间距。如果你使用水平间距,你可能需要调整它,在我的例子中是,我没有任何填充或额外的宽度。如果这样做,您将需要调整这一点,以确保除法最终得到正确的答案。