展開可能なリストビューを持つレイアウトがあります。その中で、各子アイテムにはグリッドビューがあります。しかし、gridviewには独自のスクロールがあり、expandablelistviewにもあります。したがって、すべてのグリッドビューに固定長を設定する必要がありますが、動的な数のグリッドビューがあります。
hereから単一のグリッドビューの解決策を見つけました。
private OnGlobalLayoutListener mOnGlobalLayoutGridListener = new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
Debug.e("", "onGlobalLayout is called");
if (gridView != null && gridView.getChildCount() > 0) {
gridView.getViewTreeObserver().removeGlobalOnLayoutListener(
this);
// gridView.get
View lastChild = gridView
.getChildAt(gridView.getChildCount() - 1);
int rows = gridView.getAdapter().getCount() / numColumns;
int extra = gridView.getAdapter().getCount() % numColumns;
if (extra > 0) {
rows++;
}
int height = (int) (lastChild.getMeasuredHeight() * rows);
gridView.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, height));
}
}
};
OnGlobalLayoutListener
特定の Gridview を参照しません。すべてのグリッドビューには異なる数のアイテムがあるため、すべてのグリッドビューにこのリスナーを使用することはできません。
ここを参照
誰でも私を助けることができますか?前もって感謝します。