English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
通常の開発プロセスでは、私たちのListViewは単なるテキストやボタンの表示だけでなく、複雑なレイアウトを表示することが多いです。そのため、自分でレイアウトやカスタムAdapterを書かなければなりません。一般的にはBaseAdapterを継承します。サンプルコードは以下に示します。ListViewのクリックイベントを書くときはOnItemClickListener、onItemClickメソッドが実行されません。そのため、ListView内のアイテムクリックイベントが無効になります。一方、アイテム内のViewのクリックイベントはgetViewメソッドで処理できます。アイテムクリックが無効になる原因は、自分で定義したアイテム内にImageButton、Button、CheckBoxなどのサブコントロール(またはButtonやCheckableのサブクラスのコントロール)があるためです。この場合、これらのサブコントロールが焦点を取得します。そのため、アイテムをクリックすると、サブコントロールが変わることが多いです。アイテム自体のクリックには反応がありません。
この時点でdescendantFocusabilityを使用することができます、descendantFocusabilityが対応する属性として3個
この属性は、Viewが焦点を取得した場合に、ViewGroupとその子コントロールの関係を定義します。
属性の値は3種類あります:
beforeDescendants:ViewGroup は子クラスのコンポーネントを優先して焦点を取得します。
afterDescendants:ViewGroup は子クラスのコンポーネントが焦点を取得しない場合にのみ焦点を取得します。
blocksDescendants:ViewGroup は子クラスのコンポーネントを覆い、直接焦点を取得します。
通常、私たちが使用するのは第3種です。つまり、Item レイアウトの root レイアウトに android:descendantFocusability=
私が直面した状況は、item レイアウトにImageButton ボタンがあり、このコンポーネントのイベント強度が高いために、root button に匹敵しています。そのため、実行後、listviewitem のクリックが失敗します。上記の方法で問題を解決します;もちろん、ImageButton を imageView に変更することでもこの問題を解決できます。
声明:本文の内容はインターネットから取得しており、著作権者は所有者であり、インターネットユーザーによって自発的に貢献し、自己でアップロードされたものです。本サイトは所有権を持ちません。また、人間による編集は行われていません。著作権侵害を疑う内容があれば、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に変更してください)で通報し、関連する証拠を提供してください。一旦確認がついたら、本サイトは即座に侵害を疑われるコンテンツを削除します。