Android:当字段可见性更改为GONE时,在XML中更改焦点顺序

时间:2012-05-01 16:06:03

标签: android android-layout

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

在Winforms中,如果隐藏某个字段,则会关注该选项卡顺序中的下一个项目。有没有办法在我的Android视图的XML中执行此操作?

我可以改变下一个焦点,然后关注程序化,但这似乎应该自动完成。

1 个答案:

答案 0 :(得分: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;
}