私はこの質問に対する答えを検索して検索しましたが、答えのように見えたものはすべて機能しなかったので、私はただ尋ねると思います。
EditText
の基礎となるListView
にいくつかのListActivity
ボックスを追加しました。 windowSoftInputMode
をadjustPan
に設定し、EditText
をクリックすると、もう一度クリックしてキーボードがカバーするまで機能します。 adjustResize
を使用すると、キーボードが起動したときにEditText
がフォーカスを失い、もう一度タップして入力する必要がある場合を除いて、機能します。
onResize
をキャッチする方法を見つけようとしていましたが、それはアクティビティではなくビューに関連しているようで、それを聞く方法が完全にはわかりません。また、EditText
ボックスとListView
自体(私が読んだ他の投稿で示唆されているように)で、どちらも役に立たないように見える、あらゆる種類のフォーカス可能な設定を試しました。
あなたが本当にする必要があるのはあなたのListViewにこれを適用することです:
XML:
Android:descendantFocusability="afterDescendants"
Java:
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
私の場合、このようなコードをマニフェストに追加すると完璧に機能しました。
Android:windowSoftInputMode="adjustPan"
私にとって、以下の組み合わせが私を助けました(特に3番目):
1)マニフェストファイルの関連アクティビティに以下を追加します。これは、リストビューのサイズを変更して、softKeyboardの上の領域のみを埋めるために必要です。
Android:windowSoftInputMode="adjustResize"
2)以下では、ListViewは、その子孫のいずれもそれを望まない場合にのみフォーカスを取得します。子孫(EditText)は、フォーカスを取得して維持する必要があります。
<ListView
...
Android:descendantFocusability="afterDescendants"/>
3)キーボードの真上にあるスペル候補バーの自動表示/非表示により、ListViewがトリガーされ続けて更新されます。 ListViewのEditTextの提案をオフにしました。
<EditText
...
Android:inputType="textNoSuggestions|textVisiblePassword" />
adjustResize
を実行した後、EditText.requestFocus();
のような操作を実行して、フォーカスをEditText
にリセットし、再びフォーカスがあり、ユーザーがフォーカスを持たないようにします。もう一度タップします。 EditText.isFocused()
を使用して、デバッグログステートメントなどでフォーカスされているか(true)、フォーカスされていないか(false)を確認できます。
SetFocusable()
を使用してフィールドをfocusable
に設定する必要がある場合もありますが、これによりListView
自体からフォーカスが奪われ、使用できなくなる可能性があるため、注意が必要です。後でスクロールまたは選択するために、フォーカス可能な設定を試してみる必要があり、フォーカスされたものになります。
私のプロジェクトでもまったく同じ問題が発生しました。
この問題を解決するために、EditText
をサブクラス化し、[戻る]ボタンを押して処理しました。その時点でEditText
clearsがフォーカスをクリアしていることを確認します。
それを行う方法について、 この解決策 を確認してください。
幸運を。
mViewHolder.editText = (EditText)convertView.findViewById(R.id.editText1);
mViewHolder.editText.setTag(position);
mViewHolder.editText.setTextColor(0xFF000000);
mViewHolder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
EditText et =(EditText)v.findViewById(R.id.editText1);
editTextArrayList.set(position,et.getText().toString().trim());
}
}
});
こんにちは以下のリンクがあなたを助けるかもしれません http://mylearnandroid.blogspot.in/2014/06/listview-problem-while-scrolling.html
リサイクラービューが最適に機能し、他のプロパティをいじくり回す必要はありません。