0

我目前正在开发的应用程序的一部分与 android shell 完全一样,显示了几个页面,其中填充了带有文本标签的图标。用户可以在页面之间滑动以找到所需的元素。我在每个页面中使用 PagerView 和 GridView。

每个页面的内容应该完全适合可见区域,没有滚动。问题如何计算每页上的图标数量?

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

更新:

似乎我无法很好地描述我的问题,我将尝试提供更简单的案例,假设我确实有顶部状态栏和底部一些按钮栏的活动,两者都是固定高度。GridView 使用中间的整个剩余区域。

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

4

2 回答 2

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());
        } 
    });
}
于 2013-10-10T20:45:22.787 回答
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 并递归调用该方法。

于 2013-10-10T20:40:58.817 回答