1

我有一个由 31 个单元组成的网格视图。用户可以选择任何单元格组合,然后单击按钮以保存他们的选择。一旦他们单击保存按钮,就会出现一个对话框,询问他们下一步要做什么。在这个对话框中是一个编辑文本视图。当用户在编辑文本框内单击时,会出现键盘。发生这种情况时,屏幕上只有 31 个单元格中的 21 个可见,当我尝试调用 GridView 类的 getChildrenCount() 方法时,我只看到 21 个孩子。有人可以解释为什么会发生这种情况以及我能做些什么来消除这个问题吗?我附上了图片,希望能澄清这个问题。下面我粘贴了一段代码,我试图在其中获取 gridview 的子数。

protected Set<String> getSelectedFrequencies() {
    Set<String> selectedFrequencies = new HashSet<String>();
    for(int i = 0; i < gridView.getChildCount(); i++) {
        ViewGroup gridChild = (ViewGroup) gridView.getChildAt(i);
        for(int k = 0; k < gridChild.getChildCount(); k++) {
            if( gridChild.getChildAt(k) instanceof Button ) {
                if(gridChild.getChildAt(k).isSelected()) {
                    selectedFrequencies.add(gridChild.getChildAt(k).getTag().toString());
                }
            }
        }
    }
    return selectedFrequencies;
}

代码没有什么特别之处。在对话框出现和键盘弹出之前 GridView 的图像捕获弹出键盘时 GridView 的图像捕获

4

1 回答 1

1

您使用的是 pan 或 resize 的 softInputMode 吗?有了锅,这永远不会发生。通过调整大小,可能只有 21 个适合屏幕,因此 gridView 仅创建 21 个子项,并在您滚动时进行视图交换。如果您不知道,listview 和 gridview 只会创建尽可能多的视图以适应屏幕。当您滚动时,它只会将新位置的数据加载到现有视图中。

于 2013-07-04T04:01:41.240 回答