0
我有佈局具有expandablelistview。而且,每個子項都有GridView。但gridview有自己的滾動和expandablelistview也有。所以我必須爲所有gridview設置固定的長度,但是有動態數量的gridviews。禁用gridview滾動
我發現從here單gridview的解決方案。
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。所以我不能將這個監聽器用於所有的gridviews,因爲所有gridview都有不同數量的項目。
看到這裏
誰能幫助我? 在此先感謝。
AFAIK另一個可滾動項目內的可滾動項目在Android中不起作用。 – Ixx
我知道,這就是爲什麼OnGlobalLayoutListener用於設置gridview的結束長度的原因。但我面臨着多個gridview的問題。問題是如何管理多個OnGlobalLayoutListener。 –