我正在尝试创建一个简单的聊天布局。

我有一个transcriptMode =“ alwaysScroll”和setStackFromBottom(true)的ListView。
ListView有一个带有EditText和按钮的页脚(这是一个页脚,因为我希望它与列表一起滚动)。

每当用户键入EditText时,我都会使用TextWatcher更改按钮上的文本。

问题是使用物理键盘时,每个键入的字母会将列表滚动到顶部,并阻止其他字母进入EditText。
与软键盘配合使用时效果很好...

我以为它可能与页脚更改有关,要求适配器进行刷新,但事实并非如此。

这是Android的错误还是我遗漏了一些东西?

谢谢。

编辑:
我忘记添加的另一件重要事情是,很奇怪,当键入任何字母时,滚动到顶部,但是删除字符时,它可以正常工作,调用了相同的afterTextChanged。

最佳答案

好吧,看来我已经解决了,

afterTextChanged强制在ListView中进行重新布局,导致其跳到顶部(应该已经跳到底部,因为我已经设置了stackFromBottom)。

无论如何,我已经将某些视图从wrap_content切换到其他替代方法,并且从在隐藏视图上使用可见性“ gone”切换为“不可见”,这样就不必在每个字母都起作用后调用onMeasure了。

希望这可以帮助某人...

09-11 02:20