3

複数の編集テキスト (名前、電話番号、コメント) を含むレイアウトがあります。ビューが表示される前に、HTTP 呼び出しの結果に基づいて、1 つの編集テキストが非表示 (comments.setVisibility(View.GONE)) または表示されます。そのビューが非表示で、ユーザー タブが前のビューからのものである場合、プログラムは停止します。

Winforms では、フィールドが非表示の場合、タブ オーダーの次の項目がフォーカスされます。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 に答える