当EditText增长时,ListView滚动到顶部

Nic*_*ost 13 java android listview android-edittext

我有一个ListviewEditTexts在每一个细胞.每当我将文本添加到EditText增长1行的点时,ListView滚动到顶部(并且通常EditText通过这样做从视图中删除).

我发现了一些关于这个的问题,但他们似乎只有"黑客"作为答案,没有什么对我有用.

在多行EditText中键入时,ListView会滚动到顶部

带有edittext的Listview - 自动滚动"下一步"

编辑:经过大量的研究,我发现这是因为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);
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

所以我需要的是:

  1. ListView当子视图再次布局时,有一种方法可以不自动滚动到顶部

  2. 一种方法可以EditText在调用之后关注我ListView.setSelected() 或3.有另一种方式来滚动ListView它不会清除焦点EditText.

可供选择

  1. 我曾尝试scrollTo()smoothScrollToPosition().scrollTo由于某种原因工作,但隐藏了某些项目ListView(它们变得不可见,没有加载).并smoothScrollToPosition()创建一个动画,其中ListView跳转到顶部,然后它将用户带回到项目(并执行2或3次).

Che*_*shi 4

根据我的观点,如果您想ListView通过使用从项目中获取输入EditText,那么您应该TextView就地使用EdiText,然后单击TextView您应该打开输入对话框,EditText这是更简单和更好的解决方案。EditText焦点的处理是很困难的,你需要为此ListView付出额外的努力。Listeners

或者

如果您的 UI/UX 中的输入框数量有限,那么您可以EditText使用.CustomListViewScrollViews