そのため、ListView の上にいくつかの要素 (EditText を含む) があります。EditText は基本的に、ListView のフィルタリングに機能を追加するために実装したカスタム検索フィールドです。EditText を ListView のヘッダーにすることはできません。これは、リストをスクロールするときに画面からスクロールしないようにするためです。
小さなデバイスを除いて、すべてがうまく機能します。EditText にテキストを入力しているときに画面がスクロールしないため、ListView 内でライブ フィルタリングが表示されません。
通常、レイアウト ファイルの親アイテムを ScrollView にし、アクティビティの windowSoftInputMode をadjustResize として定義しますが、レイアウト内にこの ListView があり、リスト内に ListView があるのは罪であるため、これはオプションではありません。 ScrollView.
理想的には、私は次のことを実現する方法を探しています: - EditText がフォーカスを得ると、ページの一番上までスクロールし、リストビューが画面の残りを占めるようにしたいと考えています。- EditText がフォーカスを失うと、画面をデフォルトの状態に戻したいと思います。
これまでのところ、これを行う唯一の実際の方法は、キーボードが表示されていることを手動で検出してから画面の上部を非表示にし、キーボードが消えていることを検出したら再度表示することです。
誰もそのようなハックではないより良いものを提案できますか?