私はこれまでにこれに約6時間費やしており、障害物だけにぶつかっています。一般的な前提は、ListView
(アダプターによって生成されたか、ヘッダービューとして追加されたかにかかわらず)EditText
ウィジェットとButton
です。私がやりたいことは、ジョグボール/矢印を使用して、セレクターを通常のように個々のアイテムにナビゲートできることですが、特定の行に到達したとき-行を明示的に識別する必要がある場合でも-これはフォーカス可能です子、セレクターで位置を示すのではなく、その子にフォーカスを当てたい。
私は多くの可能性を試しましたが、これまでのところ運がありません。
レイアウト:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
ヘッダービュー:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
アダプターに他のアイテムがあると想定すると、矢印キーを使用すると、リストの選択が期待どおりに上下に移動します。しかし、ヘッダー行に到達すると、セレクターにも表示されEditText
、ジョグボールの使用に集中する方法がありません。注:意志をタップEditText
するその時点でフォーカスされますが、これはタッチスクリーンに依存しているため、必須ではありません。
ListView
これに関しては明らかに2つのモードがあります
。1 setItemsCanFocus(true)
.:セレクタは表示されませんがEditText
、矢印を使用するとフォーカスを取得できます。フォーカス検索アルゴリズムは予測が難しく、どのアイテムが選択されているかについての視覚的なフィードバック(行にフォーカス可能な子があるかどうか)はありません。どちらもユーザーに予期しないエクスペリエンスを与える可能性があります。
2 setItemsCanFocus(false)
.:セレクターは常に非タッチモードで描画され、EditText
タップしてもフォーカスを取得できません。
さらに悪いことに、呼び出しeditTextView.requestFocus()
はtrue を返しますが、実際にはEditTextフォーカスを与えません。
私は、ビジョン化は基本的に1&2のハイブリッドではなく、リストの設定場合ですよ何すべての項目がフォーカス可能かではありません、私はセットフォーカス特性にしたい単一、リスト内の項目ように選択からセレクタをシームレスに移行することフォーカスできない項目の行全体、およびフォーカス可能な子を含む項目のフォーカスツリーをたどります。
テイカーはいますか?