2

各行ListViewEditText. これが私のものR.layout.itemです:

<?xml version="1.0" encoding="utf-8"?>

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:inputType="textMultiLine">

</EditText>

がフラグEditTextを介して複数行の入力を許可する方法に注意してください。android:inputType="textMultiLine"を使用して、ArrayAdapterスクロールできるListViewように多数の行を設定します。ListView私の場合、アイテムは40です。これが私のものMainActivity.javaです:

public class MainActivity extends ListActivity {

    final int NUM_ITEMS = 40;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] items = new String[NUM_ITEMS];
        for (int i = 0; i < NUM_ITEMS; i++) {
            items[i] = Integer.toString(i);
        }
        setListAdapter(new ArrayAdapter<String>(this, R.layout.item, items));
    }

}

行 20 まで下にスクロールしてテキストの入力を開始しますが、行末に到達しEditText、2 行目に対応するようにサイズが変更されると、突然ListView自動的に一番上までスクロールします。

説明されている動作はひどいユーザー エクスペリエンスであると考えており、なぜそれがデフォルトであるべきなのか理解に苦しむ. 私が探している動作は、上の行が配置されたままになり、下の行が必要な量だけシフトして、展開されEditTextた . どうすれば達成できますか?

追加情報として、Android 4.2.2 に対するエミュレーターでこのコードを実行します。デバイスは 3.2 インチの HVGA スライダー (ADP1) です。ユーザーが経験したバグを再現するために、その特定のデバイスを選択しました。

4

1 に答える 1