【发布时间】:2017-09-14 15:21:33
【问题描述】:
我在每个单元格中都有一个Listview 和EditTexts。每当我将文本添加到 EditText 增长 1 行时,ListView 就会滚动到顶部(并且通常会通过这样做从视图中删除 EditText)。
我发现了一些关于此的问题,但他们似乎只有“黑客”作为答案,没有什么对我有用。
ListView scrolls to top when typing in multi-line EditText
Listview with edittext - auto scroll on "next"
编辑: 经过大量研究,我发现这是因为editText正在调整大小,导致ListView布局其子视图然后重置到顶部。我想找到一种方法让 EditText 在原地保持增长。
我尝试这个是因为我在网上找到了一个建议,但是,即使它使ListView 保持在正确的高度,它也会从EditText 中清除焦点,我似乎无法用requestFocus 找回它。
private Stirng getTextWatcher(){
return new TextWatcher(){
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override public void afterTextChanged(Editable s) {
listView.setSelection(index);
}
}
}
所以我需要的是:
有办法让
ListView在再次布局子视图时不会自动滚动到顶部,或者一种在调用
ListView.setSelected()或 3 后聚焦EditText的方法。还有另一种滚动ListView的方法,它不会从EditText清除焦点。
对于选项
- 我已经尝试过
scrollTo()和smoothScrollToPosition()。scrollTo出于某种原因有效,但从ListView中隐藏了某些项目(它们变得不可见,未加载)。smoothScrollToPosition()创建一个动画,其中ListView跳到顶部,然后将用户带回项目(并执行 2 或 3 次)。
【问题讨论】:
-
你能发布你的代码吗?为什么这些答案对你不起作用?
-
@legendof 发布我的代码是为了什么?列表视图?这对我来说似乎很标准。没什么特别的。除了在 XML 中填充它之外,我在 java 中没有对它做任何事情。我的意思是所有这些都是黑客,我想要一些优雅和高效的东西......而不是像“每次添加字母时滚动列表视图”
-
你能给我们看看 XML 布局吗?列表视图的代码,以及它的父母。是不是碰巧在 ScrollView 里面?
标签: java android listview android-edittext