Android API レベル 8 の GridView の行数を取得する方法はありますか?
16075 次
5 に答える
19
昨夜これを解決する必要がありましたが、うまくいきました。子の幅を調べ、すべてのセルの幅が同じであると仮定して、GridView の幅を子の幅で割ります。(getColumnWidth()
以前の API でも使用できないため、回避策)。
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()
。水平方向の間隔を使用する場合は、これを考慮して微調整する必要がある場合があります。 - 私の場合、考慮すべきパディングや追加の幅はありませんでした。その場合、除算が最終的に正しい答えになるように、これを微調整する必要があります。
于 2013-03-22T13:56:52.867 に答える
3
これを試して:
Math.ceil( (double)gridView.getCount() / (double)gridView.getNumColumns() );
于 2012-09-01T22:27:19.343 に答える
1
Android APIガイドのGridViewページを見ると、パラメータの1つが位置であるというメソッドがあることがわかります。多分あなたは行数を得ることができます。onItemClickListener
getNumColumns()
于 2012-09-01T22:26:36.997 に答える