1

環境

レイアウトのさまざまなビューのフォーカス順序を指定する必要があるため、完全にアクセスできる必要があるアプリを開発しています。

私のレイアウトは次のようになります (数字はフォーカス順序を定義し、3ListView一般的なビューです):

マイレイアウト

XML の関連部分 (自分のニーズに合わせて意図的に使用nextFocusDownしたのではなく、使用したことを考慮して):nextFocusForward

<View
    android:id="@+id/view_1" 
    android:nextFocusDown="@+id/view_2" />

<View
    android:id="@+id/view_2" 
    android:nextFocusDown="@android:id/list" />

<ListView
    android:id="@android:id/list" 
    android:nextFocusDown="@+id/view_4" />

<View
    android:id="@+id/view_4" 
    android:nextFocusDown="@+id/view_1" />

これは、ListView がアイテムで満たされている場合にうまく機能し、フォーカスは意図したとおりに動作します。1 ⇒ 2 ⇒ 3 (アイテムごと) ⇒ 4 ⇒ 1 ... など。

問題

ListViewが空のとき、Android フォーカス マネージャーは 2 番目のビューでスタックしているようです。フォーカスが項目2に達すると、ListViewさらに少ないビューから 4 番目のビューにはフォーカスが与えられません。私のリストにアイテムが含まれていない場合、フォーカスを2から4に直接移動したいからです。

質問

何か不足していますか、それともコード内の他の何かがこの奇妙な動作を引き起こす可能性がありますか?

4

1 に答える 1

2

以下のようにプログラムでフォーカスを設定してみてください

if(yourListViewAdapter.getCount() <= 0) {
     view_2.setNextFocusDownId(R.id.view_4);
} 
于 2017-01-05T12:27:25.453 に答える