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