各行ListViewがEditText. これが私のもの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) です。ユーザーが経験したバグを再現するために、その特定のデバイスを選択しました。