我有一个包含带EditText的行的ListView。
当我点击EditText并且它还没有焦点时,它会获得焦点,键盘出现并且EditText被移动到CandidateView上方(期望的行为)。
但是,当我按下按键时,EditText保持焦点并接收输入,但向下移动并被键盘遮挡(之前的移动被反转)。
当EditText已被选择但未显示键盘时,我再次点击EditText,键盘弹出但EditText不移动到正确的位置(在CandidateView上方)。它仍然可以接收输入。
我添加了一个包含EditText的标题视图,这里一切正常。
这是我的ArrayAdapter代码,用于创建行视图:
View view = inflater.inflate(R.layout.row_profile_entry_text, null);
final String question = getItem(position);
TextView textViewQuestion = (TextView) view.findViewById(R.id.rpeq_TextViewQuestion);
textViewQuestion.setText(question);
final EditText editTextAnswer = (EditText) view.findViewById(R.id.rpeq_EditTextAnswer);
editTextAnswer.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
mAnswers.put(question, s.toString());
}
});
if (mAnswers.containsKey(question)) {
editTextAnswer.setText(mAnswers.get(question));
}
return view;
我还想强调一下,我已经按照其他问题的大多数答案建议,在清单文件中添加了
android:windowSoftInputMode="adjustPan"
并且在 ListView 中添加了
android:descendantFocusability="beforeDescendants"
。
如果没有 adjustPan
,EditText 就无法获得焦点,但这并不能完全解决问题。
有人有什么想法吗?