我创建了一个简单的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
I 填充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
更改其大小以适应第二行时,突然ListView
自动滚动到顶部。
我认为所描述的行为是一种可怕的用户体验,我很难理解为什么它应该是默认行为。我寻找的行为是让上面的行保持不变,让下面的行移动必要的数量,为扩展的EditText
. 我怎样才能实现它?
一些附加信息,我在针对 Android 4.2.2 的模拟器上运行此代码,该设备是 3.2" HVGA 滑块 (ADP1)。我选择了该特定设备来重现用户遇到的错误。