10

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"

EditTextadjustPanがないと、フォーカスをまったく受け取ることができませんが、問題を完全に解決することはできません。

誰かが私が間違っていることを知っていますか?

4

2 に答える 2

1

これを試して:

<activity name="YourActivity"
    android:windowSoftInputMode="stateVisible|adjustResize|adjustPan">
</activity>

マニフェスト ファイルで。

adjustResizeを使用している場合は、おそらく動作するはずですScrollView

于 2013-01-29T05:56:18.393 に答える