Android如何计算页面上的元素数量

时间:2013-10-10 20:35:37

标签: android android-viewpager

应用程序的一部分我正在处理的行为与android shell完全相同,显示了几个带有文本标签图标的页面。用户可以在页面之间滑动以查找所需元素。我在每个页面都使用PagerView和GridView。

每页的内容应完全适合可见区域,不能滚动。如何计算每页图标数量的问题?

接下来的问题是,我无法调用pagerView.getHeight(),因为实际的布局计算还没有执行,所以我的结果为0。

更新:

似乎我无法很好地描述我的问题,我会尝试提供更简单的情况,假设我的活动状态栏位于顶部,而某些按钮栏位于底部,两者都是固定高度。中间的整个剩余区域由GridView使用。

网格视图应该显示矩形图标,我需要计算的是它可以显示多少个图标而不滚动(因为剩余的图标将显示在下一个活动中)。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

public int countElements(ViewGroup group) {

   int count = 0;
   for (int i = 0; i < group.getChildCount(); i++) {
       View v = layout.getChildAt(i);
       Class c = v.getClass();
       if (c == *Icon*) {
          count++;
       }         
    }
    return count;
}

如果您有内部视图,可以检查c是否是GroupView并以递归方式调用该方法。

答案 1 :(得分:0)

至于你的第二个问题,请尝试在onCreate中使用它:

private void calculateSize(int height, int width){
    int rows = Math.floor(height/imageHeight);
    int columns = Math.floor(width/imageWidth);
    //do something with numbers
}

ViewTreeObserver vto = pagerView.getViewTreeObserver();
if(vto.isAlive()){
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            vto.removeGlobalOnLayoutListener(this);
            calculateSize(gridView.getHeight(), gridView.getWidth());
        } 
    });
}