ToggleButton组在复杂的布局中

时间:2015-09-23 03:53:17

标签: android

假设我有这样的视图结构:

<TableLayout>
    <TableRow>
        <ToggleButton />
        <ToggleButton />
        <ToggleButton />
    </TableRow>
    <TableRow>
        <ToggleButton />
        <ToggleButton />
        <ToggleButton />
    </TableRow>
</TableLayout>

我的目标是让切换按钮充当单选按钮组。 SOF上有很多答案说使用RadioGroup。我尝试了一些,它们工作但不如预期,因为它们打破了TableRow的格式,比如:列固定宽度。然后我决定使用递归方法检查&amp;重置切换按钮状态,如下所示:

private void resetChildState(ViewGroup parent, int target) {
    int count = parent.getChildCount();

    for (int i = 0; i < count; i++) {
        View child = parent.getChildAt(i);
        if (child instanceof TableRow) {
            resetChildState((ViewGroup)child, target);
        } else if (child instanceof ToggleButton) {
            if ((int)child.getTag() != target) {
                ((ToggleButton) child).setChecked(false);
            }
        }
    }
}

这有效,但另一个问题来了。响应时间太糟糕了,因为在主线程上有太多工作导致了一些滞后行为。

我的问题是:对于我的情况,还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

保留一个只有ToggleButtons的列表并迭代它以重置它们。然后,您不需要遍历整个视图层次结构。