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

标签 android android-layout

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

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

我可以以编程方式改变下一个焦点和下一个焦点,但这似乎应该自动完成。

最佳答案

我找不到 Android 执行此操作的任何方法。因此,假设您的 View 通过下一个焦点向下形成一个循环,这里有一个设置下一个焦点的方法:

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;
}

关于Android:当字段可见性更改为 GONE 时更改 XML 中的焦点顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400527/

相关文章:

android - 线性布局中的 ImageView

android - BroadcastReceiver Intent 不接收额外内容

java - 扩展 AsyncTask 的类中出现错误

android - 如何多行 CollapsingToolbarLayout 的扩展标题?

android - 使用 PagerSnapHelper 在 RecyclerView 中添加空间

java - Android:如何根据首先选择的单选按钮启用/禁用复选框

java - Android - FirebaseListAdapter 复制运行时布局更改

java - Android:手机 hibernate 时 Wi-Fi 强度不会改变

android - 这个类应该是公共(public)的(android.support.v7.internal.widget.ActionBarView.HomeView)

android - 制作 Android 应用程序时是否有需要注意的内存管理技巧?