3

我有一个包含多个编辑文本(姓名、电话、评论)的布局。在显示视图之前,根据 HTTP 调用的结果隐藏或显示一个编辑文本 (comments.setVisibility(View.GONE))。如果该视图被隐藏并且用户选项卡来自前一个视图,则程序停止。

在 Winforms 中,如果某个字段被隐藏,则 Tab 键顺序中的下一个项目将成为焦点。对于我在 Android 中的视图,有什么方法可以在 XML 中执行此操作吗?

我可以将下一个焦点向下更改并以编程方式将下一个焦点向上更改,但这似乎应该自动完成。

4

1 回答 1

0

我找不到 Android 这样做的任何方式。所以这是一种设置下一个焦点的方法,假设您的视图通过下一个焦点形成一个循环:

protected int getNextFocusDownBasedOnVisibility(View view)
{
    int nextViewDownId = View.NO_ID;

    if (view.getVisibility() != View.GONE)
    {
        boolean keepGoing = true;
        View nextView = view;

        while (keepGoing)
        {
            keepGoing = false;
            nextViewDownId = nextView.getNextFocusDownId();

            if (nextViewDownId != View.NO_ID)
            {
                nextView = findViewById(nextViewDownId);

                if (nextView.getVisibility() == View.GONE)
                {
                    keepGoing = true;
                }
            }
        }
    }

    return nextViewDownId;
}
于 2012-05-09T13:58:19.640 回答